Неверная кодовая последовательность UTF-8
Я пытаюсь сделать простое соединение с использованием базы данных NuoDB -
import pynuodb
connection = pynuodb.connect("DB", "servername", "adminaccount", "password", options={'schema': 'schemaname'})
cursor = connection.cursor()
thedata = open('file.pdf', 'rb').read()
sql = "update table set column = (?) where id = 1"
cursor.execute(sql, (thedata,))
при попытке загрузить это генерирует следующую ошибку -
INVALID_UTF8: invalid UTF-8 code sequence
ОБНОВЛЕНИЕ - я попытался использовать оба BLOB или BINARY, и оба генерируют ту же ошибку. Документация по типам данных находится здесь -
1 ответ
Решение
pynuodb
библиотека дает вам специальный тип для инкапсуляции двоичных данных, pynuodb.Binary()
; оберните двоичные данные в этот объект, чтобы обеспечить правильную обработку:
thedata = pynuodb.Binary(open('file.pdf', 'rb').read())
sql = "update table set column = (?) where id = 1"
cursor.execute(sql, (thedata,))
Без этой оболочки драйвер пытается отправить данные на сервер в виде текста, который должен быть в кодировке UTF-8.