“OperationalError: no such column:” Hatası ve Çözümü
- September 8, 2011
Python’da sqlite3 modülü ile çalışıp ufak bir telefon rehberi yazmayı denerken şöyle bir hata alıyordum:
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")