sqlite3.ProgrammingError: Вы не должны использовать 8-битные строки байтов, если вы не используете text_factory, которая может интерпретировать 8-битные строки байтов

Используя SQLite3 в Python, я пытаюсь сохранить сжатую версию фрагмента HTML-кода UTF-8.

Код выглядит так:

...
c = connection.cursor()
c.execute('create table blah (cid integer primary key,html blob)')
...
c.execute('insert or ignore into blah values (?, ?)',(cid, zlib.compress(html)))

В какой момент получить ошибку:

sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.

Если я использую «текст», а не «blob» и не сжимаю фрагмент HTML, все работает отлично (хотя db слишком большой). Когда я использую 'blob' и сжимаю с помощью библиотеки Python zlib, я получаю сообщение об ошибке выше. Я оглянулся, но не смог найти простой ответ для этого.

Ответы на вопрос(5)

Ваш ответ на вопрос