在 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.
如果我使用“ text”而不是“ blob”,并且不压缩 HTML 代码片段,那么它完全可以正常工作(但是 db 太大了)。当我使用‘ blob’并通过 Python zlib 库进行压缩时,会得到上面的错误消息。我环顾四周,但找不到这个问题的简单答案。