“ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory…” Hatası ve Çözümü

Python’da sqlite3 modülü ile çalışırken veri girişi sırasında alttaki gibi bir hata aldım. Neyse ki programı çöpe atmadan olayı çözebildim.

Traceback (most recent call last):

  File “C:UsersgurayDesktoprehberisle.py”, line 16, in

    ss.isles(“gry”,”ylıdrm”,”45fd432″,”543fd54″)

  File “C:UsersgurayDesktoprehberisle.py”, line 11, in isles

    self.imlec.execute(“””INSERT INTO rehber(isim,soyisim,telefon,telefon2) VALUES(?, ?, ?, ?)”””,(ad,soyad,no,no2))

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.

Şimdi neden olduğunu kısaca anlatayım. Bildiğimiz üzere Python Türkçe karakterleri vs. “u” harfini kullandığımızda, yani unicode dediğimizde tanımaya başlıyor. Sorguya gönderdiğim karakterler şu şekildeydi:

ss.isles("gry","yıldrm","45fd432","543fd54")

Dolayısıyla ikinci tırnaklar arasındaki “ı” karakteri sorunun sebebi oldu. Elbette insalara Türkçe karakter yasağı getirecek halimiz yok. Hemen unicode olarak yazalım ve sorunumuz çözülmüş olsun.

ss.isles(u"gry",u"yıldrm",u"45fd432",u"543fd54")
 
comments powered by Disqus