Sqlite3 Veritabanı sorgulamasında değişken ekleyemiyorum

Merhabalar,

import sqlite3

dbdosyasi = sqlite3.connect('C:/Users/emiry/Desktop/Denemeler.db')

islemyap = dbdosyasi.cursor()

kadi = input("Hoş geldiniz. Kullanıcı adınız nedir?: ")

islemyap.execute("SELECT * FROM bilgid WHERE adsoyad = " + '' + kadi + '')

aa = islemyap.fetchall()

for add in aa:

    print(add)

    if add[0] == kadi:

        print("Kullanıcı adı doğru")

    else:

        print("Değil")

dbdosyasi.close()

Amacım veritabanı üzerinden kullanıcı adını çekmek. Fakat 5. koddaki sorguda, input ile alınan veriyi sorgulayamıyorum.

no such column: yemirbo

hatası alıyorum.

Hata nedeni tahminimce, değişkeni yazı şeklinde gösteremediğim için. Nasıl çözebilirim?

islemyap.execute("SELECT * FROM bilgid WHERE adsoyad = "" + '' + str(kadi) + '')

ya da

kadi = str(input("Hoş geldiniz. Kullanıcı adınız nedir?: "))

no such column: yemirbo

Hala aynı hata hocam.

Yanlış yazmışım. Bu şekilde olması lazım.

Kadi kısmındakini string ifade göremiyor tek tırnak ile kapatılması gerekiyor.

islemyap.execute("SELECT * FROM bilgid WHERE adsoyad =  '{}' ".format(kadi))

Bir şey daha sorabilir miyim? Dediğiniz kod oldu, teşekkürler. Fakat, kullanıcı adı yanlış girilince bir şey demiyor ve programı sonlandırıyor. Neden olabilir? Güncel kod:

import sqlite3

dbdosyasi = sqlite3.connect('C:/Users/emiry/Desktop/Denemeler.db')

islemyap = dbdosyasi.cursor()

kadi = str(input("Hoş geldiniz. Kullanıcı adınız nedir?: "))

islemyap.execute("SELECT * FROM bilgid WHERE adsoyad =  '{}' ".format(kadi))

aa = islemyap.fetchall()

for add in aa:

    print(add)

    if add[0] == kadi:

        print("Kullanıcı adı doğru")

    else:

        print("Değil")

dbdosyasi.close()

Yapıya göre bakarsak eğer mesela ‘Ahmetapkshgduoas’ girdim diyelim :sweat_smile: aa sorgusunu oluşturuyorsun ve elemanları getiriyorsun bu kullanıcı adıyla ilgili olan. For yapısıda bu sayıya göre dönüyor. 0 döneceği için işlem gerçekleşmiyor.

for add in aa:

    print(add)

    if add[0] == kadi:

        print("Kullanıcı adı doğru")

else:
       print("Değil")

elseyi for ile ayarlarsak sorun çözülür yüksek ihtimalle.

1 Beğeni