En utilisant SQLite3 en Python, j'essaie de stocker une version compressée d'un extrait de code HTML UTF-8.
Le code ressemble à ceci:
...
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)))
À quel moment obtenir l'erreur:
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 j'utilise «text» plutôt que «blob» et que je ne compresse pas l'extrait de code HTML, cela fonctionne très bien (la base de données est trop grande cependant). Lorsque j'utilise 'blob' et que je compresse via la bibliothèque Python zlib, j'obtiens le message d'erreur ci-dessus. J'ai regardé autour de moi mais je n'ai pas trouvé de réponse simple pour celle-ci.