“OperationalError: no such column:” Hatası ve Çözümü

Python’da sqlite3 modülü ile çalışıp ufak bir telefon rehberi yazmayı denerken şöyle bir hata alıyordum:

Exception in Tkinter callback

Traceback (most recent call last):

  File “C:Python27liblib-tkTkinter.py”, line 1410, in call

    return self.func(*args)

  File “C:UsersgurayDesktoprehberp1ac.py”, line 45, in

    ekleme=Button(pencere1,text=”Ekle!”,command=lambda : dbye(isim.get(),soyisim.get(),tel1.get(),tel2.get()))

  File “C:UsersgurayDesktoprehberp1ac.py”, line 7, in dbye

    islem=sinif.isles(ad,soyad,tel1,tel2)

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

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

OperationalError: no such column: gry

Hatanın çözümü ile uğraşırken hem sqlite ile veritabanı güvenliği için istihza.com da okuduğum Fırat Özgül’ün yazısı hem de aynı hatayı alanların çözümleri bir araya gelince %s yerine ? kullanmanın gerekliliğini anladım. Kısacası yukarıdaki hatayı şu tip bir kod kullanırken almanız normal:

#-*-coding:utf8-*-
class ekle():
    def isles(self,ad,soyad,no,no2):
        import sqlite3

        self.baglanti=sqlite3.connect("xx.db")
        self.imlec=self.baglanti.cursor()
        self.imlec.execute("INSERT INTO rehber(isim,soyisim,telefon,telefon2) VALUES(%s,%s,%s,%s)" %(ad,soyad,no,no2))

        self.baglanti.commit()
        self.baglanti.close()

Düzeltilmiş hali ise şu şekilde, denedim çalışıyor.

#-*-coding:utf8-*-
class ekle():
    def isles(self,ad,soyad,no,no2):
        import sqlite3

        self.baglanti=sqlite3.connect(":memory:")
        self.imlec=self.baglanti.cursor()
        self.imlec.execute("""CREATE TABLE rehber(isim,soyisim,telefon,telefon2)""")
        self.imlec.execute("""INSERT INTO rehber(isim,soyisim,telefon,telefon2) VALUES(?, ?, ?, ?)""",(ad,soyad,no,no2))

        self.baglanti.commit()
        self.baglanti.close()
# Sınıfımızı örneklendirip nesne haline getirelim ve deneyelim.
ss=ekle()
ss.isles(u"gry",u"ylıdrm",u"45fd432",u"543fd54")
 
comments powered by Disqus