[Linux-programlama] Re: ProgrammingError: Incorrect number of bindings supplied.

---------

[Linux-programlama] Re: ProgrammingError: Incorrect number of bindings supplied.

From: Necmettin Begiter <necmettin.begiter_at_gmail.com>
Date: Mon, 26 May 2008 02:39:42 +0300
Message-ID: <3787dfa80805251639va85e4eepba14f65be1d51d0e@mail.gmail.com>

26 Mayýs 2008 Pazartesi 02:12 tarihinde H.Ibrahim Yilmaz
<ibrahim.yilmaz_at_opengeomap.org> yazdý:
> #!/usr/bin/python
> #-*-coding=utf-8-*-
> from Tkinter import *
> from tkMessageBox import *
> import sqlite3
> def kaydet():
>
> a=alane.get()
> connection=sqlite3.connect('datasapiens.db')
> cursor = connection.cursor()
> bul=cursor.execute('SELECT * FROM areas WHERE area = ?', (a,))
> if bul > 0:

Sorun burada. Çalýþtýrýlan SQL cümlesi SELECT olduðunda,
cursor.fetchone() ile almak gerekiyor, "bul=.." burada iþe yaramýyor
yani. SELECT'ten gelecek tüm satýrlarý -örneðin cursor.fetchall() ile-
almadan kaç satýr geldiðini bilemeyiz; "bul=.." satýrýndan sonra
"print bul" ile sorgunun düzgün çalýþýp çalýþmadýðýný kontrol edin,
göreceksiniz. Bir üstteki sorguyu deðiþtirin, "print bul"dan aldýðýnýz
çýktýdan hangi durumda ne döndüðünü kontrol edin. Birþey dönmeyeceðini
emin olduðunuzda bul ne oluyor, birþey döndüðünde ne oluyor, önce onu
bir kontrol edin, if kýsmýný da ona göre deðiþtirin.

Yine haddim olmayarak ufak bir tavsiye: Direkt programý yazmaya
giriþmeyin. Hele ki veri öbekleriyle alýþveriþ içinde olacak
programlarda asla. Programýn iþleyeceði-kullanacaðý-kaydedeceði
verilerin doðru olup olmadýðýný anlamak için kontrol noktalarýnýz
olsun (örneðin sorgularýn kendilerini ve sonuçlarýný print ile
ekranýnýza bastýrýn, verilerde bir gariplik olup olmadýðýna bakýn.
Programýnýzýn mantýðý doðru olsa bile, gelen-giden verilerin
doðruluðunu da kontrol etmelisiniz.

> showinfo ('Tamam',"Bu Alan Daha Önceden Kaydedilmiþ!")
> else:
> cursor.execute('INSERT INTO areas (area, areaid) VALUES (?, null)', (a))

a'dan sonra virgül yok?

> connection.commit()
> showinfo ('Tamam',"Kayýt Tamamlandý.")
> connection.close()
> pencere = Tk()
> pencere.geometry("300x300+15+100")
> etiket= Label(text="Alan Kayýt Formu")
> etiket.pack()
> pencere.title("Data Sapiens")
> pencere.resizable(width=FALSE, height=FALSE)
>
> alan=Label(text="Alan:")
> alan.place(relx=0.01,rely=0.2)
> kaydetb=Button(text="Kaydet",command=kaydet)
> kaydetb.place(relx=0.01,rely=0.3)
> cik=Button(text="Çýkýþ",command=sys.exit)
> cik.place(relx=0.25,rely=0.3)
>
> alane=Entry(width=10)
> alane.place(relx=0.4,rely=0.2)
>
> mainloop()

Python-SQLite etkileþimi için þu sayfalarý incelemenizi öneririm:
http://docs.python.org/lib/sqlite3-Cursor-Objects.html
http://mailliststock.wordpress.com/2007/03/01/sqlite-examples-with-bash-perl-and-python/
http://docs.python.org/lib/node351.html

Necmettin Begiter
Pardus Geliþtiricisi
_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Mon 26 May 2008 - 02:10:04 EEST

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.