Python sqlite3 ile CRUD hakkında yardım

Arkadaşlar hepinize merhaba;

Yazbel Python Belgeleri’nden de yararlandığım Python eğitimimde, sqlite3 ile veritabanı oluşturma denemeleri yapıyorum.

Bir adet telefon defteri/fihrist tarzında bir database oluşturuyorum.

Mesela amacım fonksiyona numarayı yazdığımızda, o kaydın gelmesini sağlamak.

import sqlite3

conn = sqlite3.connect("fihrist.db")
c=conn.cursor()

c.execute(""" CREATE TABLE IF NOT EXISTS numaralar(
    isim TEXT,
    soyisim TEXT,
    yas INTEGER,
    numara INTEGER)
    """)
conn.commit()

def kayitekle(isim,soyisim,yas,numara):
    c.execute("INSERT INTO numaralar VALUES (?,?,?,?)", (isim,soyisim,yas,numara))
    conn.commit()
    return print("Kayıt başarıyla eklenmiştir.")

def kayitgetir():
    c.execute ("SELECT * FROM numaralar")
    conn.commit()
    return print(c.fetchall())

def kisigetir(numara=0):
    c.execute("SELECT * FROM numaralar WHERE numara=?",(numara))
    conn.commit()
    return print(c.fetchall())

def kayitduzenle(isim,soyisim,numara):
    c.execute("UPDATE numaralar SET numara=? WHERE isim=? AND soyisim=?",(numara,isim,soyisim))
    conn.commit()
    return print("Kayıt başarılı bir şekilde düzenlendi.")

def kayitsil(isim,soyisim):
    onay = input("Silmek istediğinize emin misiniz? ----Evet,Hayır")
    if onay == "Evet":
        c.execute("DELETE FROM numaralar WHERE isim=? AND soyisim=?",(isim,soyisim))
        conn.commit()
        mesaj = print("Başarıyla silindi.")
    else:
        mesaj = print("Silinmekten vazgeçildi.")

    return mesaj

Kodun tam hali bu şekildedir.
Aşağıda belirttiğim kısımda hata alıyorum.

def kisigetir(numara=0):
    c.execute("SELECT * FROM numaralar WHERE numara=?",(numara))
    conn.commit()
    return print(c.fetchall())

Yazdığım bu kodlarla sonuç alamadım. Nerede hata yapıyorum. Aydınlatabilir misiniz?

hata mesajını görmemiz lazım

Merhaba;

Mesela

kayitekle("isim","soyisim",25,5300123456)

ile bir kayıt ekledim.

ardından

kisigetir(5300123456)

yaptığımda;

Traceback (most recent call last):
  File "c:\Users\LENOVO\Desktop\Python\telefondefteri.py", line 56, in <module>
    kisigetir(5300123456)
  File "c:\Users\LENOVO\Desktop\Python\telefondefteri.py", line 25, in kisigetir
    c.execute("SELECT * FROM numaralar WHERE numara=?",(numara))
ValueError: parameters are of unsupported type

şeklinde bir hata almaktayım.

NOT : Yanlış verdiğim kodları düzelttim.

Argüman verilecek bir parametre belirlenmemiş. Ama arguman verilmeye çalışılıyor.

Çok özür dilerim yanlış kodları vermişim.

def kisigetir(numara=0):
    c.execute("SELECT * FROM numaralar WHERE numara=?",(numara))
    conn.commit()
    return print(c.fetchall())
kayitekle("isim","soyisim",25,5300123456)
kisigetir(5300123456)

Traceback (most recent call last):
  File "c:\Users\LENOVO\Desktop\Python\telefondefteri.py", line 56, in <module>
    kisigetir(5300123456)
  File "c:\Users\LENOVO\Desktop\Python\telefondefteri.py", line 25, in kisigetir
    c.execute("SELECT * FROM numaralar WHERE numara=?",(numara))
ValueError: parameters are of unsupported type

Bu şekilde bir değerin belirtildiğini bilmiyorum fakat
https://pynative.com/python-sqlite-insert-into-table/
Şu linki inceler misiniz.

@fernandoalonso özür dilerim yanlış linki atmış olabilirim.
cur.execute("SELECT * FROM tasks WHERE priority=?", (priority,)) şu örnek kullanımı inceler misiniz.
Linkide şurada:

3 Beğeni

Hocam çok teşekkür ederim. Tek bir virgül eksiğim varmış.

c.execute("SELECT * FROM numaralar WHERE numara=?",(numara**,**))

Teşekkür ediyorum yardımlarınız için.

2 Beğeni