在Python中使用SQLite3,我試圖存儲UTF-8 HTML代碼片段的壓縮版本。sqlite3.ProgrammingError:除非使用可解釋8位字節串的text_factory,否則不得使用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.
如果我使用「文本」,而不是「斑點」和不壓縮的HTML代碼段,它工作正常(分貝是大雖然)。當我使用「blob」並通過Python zlib庫進行壓縮時,出現上述錯誤消息。我環顧四周,但找不到一個簡單的答案。
您能否解釋爲什麼這會起作用? – Moshe 2013-04-08 14:58:25
當我這樣做時,我的數據庫充滿了base36文本,這會使數據庫比直接存儲blob更大。 – 2014-03-06 19:04:39
這是不正確的,你應該使用sqlite3.Binary來代替文檔說的。 – MarioVilas 2014-07-09 14:01:46