Używając SQLite3 w Pythonie, próbuję przechowywać skompresowaną wersję fragmentu kodu HTML UTF-8.
Kod wygląda następująco:
...
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)))
W którym momencie pojawi się błąd:
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.
Jeśli użyję „tekstu” zamiast „bloba” i nie kompresuję fragmentu kodu HTML, wszystko działa dobrze (choć db jest za duży). Kiedy używam „blob” i kompresuję przez bibliotekę Python zlib, pojawia się powyższy komunikat o błędzie. Rozejrzałem się, ale nie mogłem znaleźć prostej odpowiedzi na to pytanie.