Usando SQLite3 en Python, estoy tratando de almacenar una versión comprimida de un fragmento de código HTML UTF-8.
El código se ve así:
...
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)))
En qué punto aparece el error:
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.
Si utilizo 'texto' en lugar de 'blob' y no comprimo el fragmento de HTML, todo funciona bien (aunque db es demasiado grande). Cuando uso 'blob' y comprimo a través de la biblioteca zlib de Python, obtengo el mensaje de error anterior. Miré a mi alrededor pero no pude encontrar una respuesta simple para esta.