Python Sqlite Utf-8 Karakter Sorunu

Programlama15/01/2018


Python'da kullandığımız sqlite veritabanına türkçe karakter girmek istediğimizde aşağıdaki hata kaydı çıkmaktadır.

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.

Hata aslında çözümünü de söylüyor. Sqlite gönderdiğin text'i karakter setini unicode yap da gönder diyor.

Her seferinde decode yapmaktansa basit bir çözümü var.

Bağlantıyı kurduktan hemen sonra bir text_factory tanımlayıp gerekli değişikliği kendisinin otomatik yapmasını sağlayabiliriz. Aynen aşağıda olduğu gibi.

conn = sqlite3.connect("database.db")
conn.text_factory = lambda x: unicode(x, "utf-8", "ignore")


Etiketler: , ,