Неверная кодовая последовательность 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, и оба генерируют ту же ошибку. Документация по типам данных находится здесь -

http://doc.nuodb.com/display/doc/Binary+Data+Types

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.

Другие вопросы по тегам