PythonでSQLite3を使用して、UTF-8 HTMLコードのスニペットの圧縮バージョンを保存しようとしています。
コードは次のようになります。
...
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」ではなく「text」を使用し、HTMLスニペットを圧縮しない場合、すべて正常に機能します(ただし、dbは大きすぎます)。「blob」を使用してPython zlibライブラリ経由で圧縮すると、上記のエラーメッセージが表示されます。周りを見回しましたが、これに対する簡単な答えは見つかりませんでした。