Вставка двоичных данных с помощью sqlite3 - PullRequest
0 голосов
/ 18 мая 2018

Я хотел бы вставить двоичные данные в базу данных с помощью sqlite3.

compressed = zlib.compress(pickle.dumps(foo))
database.insert(cursor, "bar", config=compressed)

Здесь database из другого модуля из другого класса, который выполняет execute.В этом классе команда выглядит следующим образом:

cursor.execute('''insert into {} {} values {}'''.format(table,columns,entries))

Однако я сталкиваюсь с двумя разными проблемами, обе с вставкой двоичных данных:

Во-первых, ошибка скажет

sqlite3.OperationalError: near '''long binary data here''' syntax error

Это тот случай, когда я не могу напрямую хранить длинные двоичные данные в таблицах в sqlite3?

Во-вторых, я попытался использовать sqlite3.Binary(), но это дает мне что-то вроде <memory at 0x7fd60e327108> когда я пытаюсь распечатать двоичные данные в отдельном классе.Попытка сделать buffer() также не помогла.

С учетом этих двух проблем, как мне хранить двоичные данные в таблице sqlite3?Я использую **kwargs в своей функции;на самом деле это не единственный аргумент, который я использую в своих функциях.

Кроме того, другие параметры, которые не включали двоичные данные (простые строки и значения с плавающей запятой), не вызывали ошибку.

Обновление: мне приходит в голову, что в маринованных данных есть какие-то специальные символы, но я не уверен, как их хранить.

...