кассандра,протокол.Исключение синтаксиса:

#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»