#python #database #cassandra
#питон #База данных #кассандра
Вопрос:
Я пытаюсь вставить zip-файл в хранилище больших двоичных объектов базы данных cassandra. введите workflowid str и путь сохранения большого двоичного объекта при создании столбца таблицы
пробовать:
bin_data = open('4e9b-9c08-e3cafafd871b-20211129034556.zip', 'rb').read() print(type(bin_data)) #hex_data = codecs.encode(bin_data, "hex_codec") #print(type(hex_data)) auth_provider = PlainTextAuthProvider(username = username , password = password) cluster = Cluster(contact_points = [ip], port=1234, auth_provider = auth_provider) session = cluster.connect("keyspace") session.row_factory = dict_factory resultpath = bin_data workflowid = "d6fe8ea4-fffd" query = "insert into tablename(resultpath, workflowid) VALUES({resultpath}, '{workflowid}');".format(resultpath, workflowid) rslt = session.execute(query, timeout=None) df = pd.DataFrame(rslt) print(df) except Exception as E: print("Error: ", str(E))
Ответ №1:
Похоже, что некоторые данные в большом двоичном объекте не экранируются должным образом. Вместо этого попробуйте использовать подготовленное заявление:
query = "insert into tablename(resultpath, workflowid) VALUES(?,?);" pStatement = session.prepare(query) rslt = session.execute(pStatement, [resultpath, workflowid])
Комментарии:
1. тем не менее, я получаю сообщение об ошибке «Ошибка исключения с сервера: код=2200 [Неверный запрос] сообщение=»Недопустимая строковая константа (hello.zip) для «результирующего пути» типа blob»