[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 01:21:56 +0300
Message-ID: <3787dfa80805251521mdf43848qf6f3ffaccf381d8a@mail.gmail.com>

26 Mayıs 2008 Pazartesi 00:22 tarihinde H.Ibrahim Yilmaz
<ibrahim.yilmaz_at_opengeomap.org> yazdı:
> Merhaba, yeni bir soruyla karşınızdayım :))
> Aşağıdaki kodda bul=cursor.execute('SELECT * FROM areas WHERE
> (area=?)', (a,)) olan alanı bul=cursor.execute('SELECT * FROM areas
> WHERE (area=?)', (a)) şeklinde yaparsam ProgrammingError: Incorrect
> number of bindings supplied. hatası alıyorum. Yapmak istediğim
> esasında çok basit bir şey. areas tablosuna veri kaydedilmeden önce
> daha önce aynı veriden kaydedilmiş mi diye bakmasını eğer
> kaydedilmişse uyarı vermesini istiyorum. bul=cursor.execute('SELECT *
> FROM areas WHERE (area=?)', (a,)) şeklinde yaptığım takdirde sanki
> girdiğim bütün sayılar önceden kaydedilmiş gibi hata çıktısını
> alıyorum... Nasıl bir çözüm önerebilirsiniz? php ve mysql ile
> mysql_fetch_row() gibi bir fonksiyonla bunu kontrol edebiliyorduk
> yanlış hatırlamıyorsam... ancak sqlite+python olunca işler karışıyor
> :) Şimdiden teşekkürler.

Girdiklerinizin kaydedilip kaydedilmediğini kontrol ediyor musunuz?
(Kaydetme çalışıyor mu?)

WHERE'den sonra parantez koymadan deneyin, "SELECT * FROM areas WHERE
area= .." şeklinde.

(a,) ile (a) arasındaki fark da şudur:
IN: a = (5)
IN: a
OUT: 5
IN: a = (5,)
IN: a
OUT: (5,)

Yani o virgülü koymadığınız zaman küme (tuple) oluşturmamış oluyorsunuz.

> cursor.execute('INSERT INTO areas VALUES (?, null)', (a))

Haddim olmayarak ufak bir tavsiye:
INSERT kullanırken değer girilecek hücreleri belirtirseniz tablo
yapısını değiştirdiğinizde sorun yaşama ihtimalinizi azaltırsınız;
"INSERT INTO areas (area,whatever) VALUES (.." şeklinde.

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 - 00:52:22 EEST

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.