SQLite3-de syntax error

Merhaba.sqlite3-de kullanicidan isim,soyisim,sinif,not inputlarini aldikdan sonra bu inputlari bir tabloya eklemeye calisdim.ama:

sqlite3 OperationalError: near "?": syntax error

diye bir error verdi.syntax hatasi diyor.bakdim ama bulamadim.kodlari paylasiyorum yardimci olursaniz sevinirim:

import sqlite3 as sql
con = sql.connect("sagirdler.sqlite")
cur = con.cursor()
cur.execute("""CREATE TABLE IF NOT EXISTS sagirdler (ad,soyad,sinif,qiymet)""")
while True:
    print(
        """
        1.sagird elave et
        2.sagird sil
        3.sagirdleri goster 
        4.cix
        """
    )
    secim = int(input("etmek istediyiniz isin nomresini secin: "))

    def elave():
        ad = input("sagirdin adini girin: ")
        soyad = input("sagirdin soyadini girin: ")
        sinif = int(input("sagirdin sinifini girin: "))
        qiymet = int(input("sagirdin qiymetini girin: "))
        ad = ad.lower()
        soyad = soyad.lower()
        cur.execute("""INSERT INTO sagirdler (?,?,?,?)""", (ad,soyad,sinif,qiymet))
        print(ad, soyad, "sisteme elave olundu!")
        con.commit()
    

    def sil():
        ad = input("silinmesini istediyiniz sagirdin adini girin: ")
        soyad = input("silinmesini istediyiniz sagirdin soyadini girin: ")
        sinif = int(input("silinmesini istediyiniz sagirdin sinifini girin: "))
        ad = ad.lower()
        soyad = soyad.lower()
        cur.execute("""DELETE FROM sagirdler WHERE ad=? AND soyad=? AND sinif=?""",(ad,soyad,sinif))
        print(ad, soyad, "sistemden silindi!")
        con.commit()
    

    def goster():
        cur.execute("""SELECT * FROM sagirdler""")
        veriler = cur.fetchall()
        print(veriler)

    if secim == 1:
        elave()
    elif secim == 2:
        sil()
    elif secim == 3:
        goster()
    elif secim == 4:
        break
    else:
        print("lanet herif")
        print("xahis olunur gosterilen nomrelerden birini secin!")
        continue

not:hata elave adli fonksiyon calistirilirken ortaya cikti.

? yerine formatla yapmay─▒ deneyin bir

denedim olmadi

hata nedir?..

burada hata geldimi onu sordum as─▒l sorunun sebebini anlayamad─▒m alternatif ├ž├Âz├╝mler ├Ânermeye ├žal─▒┼č─▒yorum :slight_smile:

Oyle yapinca unused variable(kullanilmayan degsiken) hatasi veriyor.yani sqlite degiskenleri gormuyor

1 Be─čeni

UPDATE customers SET address = %s WHERE address = %s


b├Âyle string formating yapanda var ├žal─▒┼č─▒yor galiba deneyebilirsin
e─čer ├žal─▒┼č─▒rsa bu sefer akl─▒m format metodunda kal─▒r neden ├žal─▒┼čmad─▒ diye :rofl:

1 Be─čeni

Rahat olun calismadi: ) : (

1 Be─čeni

Yalniz bu ekleme degil guncelleme icin olan kod.buyuk ihtimalle %s yontemini bildirmek istediniz

1 Be─čeni

evet belirttim zaten

ama %s yontemi eski bir yontem guvenlik aciklari oldugu icin tavsiye edilmiyor.

bu sorun san─▒r─▒m string formatting ile alakal─▒ de─čil ├ž├╝nk├╝ sadece ÔÇť?ÔÇŁ i├žin de─čil ayn─▒ hatadan ├žok var ve hepsinde de ayn─▒ ┼čeyi yap─▒yorlar san─▒rsam
mesela


anlamad─▒m g├╝venlik a├ž─▒─č─▒ derken? neyin g├╝venli─či?
ikiside string formatlama .format ta kullanabilirsin onuda hatta f-string de kullanabilirsin

https://python-istihza.yazbel.com/standart_moduller/sqlite.html

sorunu buldum VALUES eklememi┼čsin :smiley:
├Ârnek bir kod mesela


.execute(""ÔÇťINSERT INTO personel VALUES
(?, ?, ?)ÔÇŁ"", veri)


Tesekkurler.6,7 saat durmadan calisinca olacagi budur.

1 Be─čeni

SQL i├žine de─či┼čken eklerken kullan─▒lmas─▒ ├Ânerilen y├Ântem ÔÇť?ÔÇŁ i┼čareti, str.format veya ÔÇť%ÔÇŁ ile formatlama de─čil.

Eski olmas─▒ ile alakas─▒ yok, y├Ântemin kendisinde de bir g├╝venlik a├ž─▒─č─▒ yok. Herhangi bir g├╝venlik problemi ya┼čamadan stringleri % ile formatlayabiliriz. As─▒l problem en son elde edece─čimiz stringÔÇÖi SQL olarak kullanmak istedi─čimizde ortaya ├ž─▒k─▒yor, k├╝├ž├╝k dikkatsizlikler sonucunda SQL kodunun yapaca─č─▒ i┼člem tamamen de─či┼čebilir.

Evet, sorun ÔÇť?ÔÇŁ karakterine ├Âzel de─čil. Hata INSERT INTO sagirdler (?,?,?,?) SQL kodunda s├Âzdizimsel bir yanl─▒┼č bulundu─čunu s├Âyl├╝yor.

Kullan─▒lmas─▒ gereken s├Âzdizimini en son @asanadam1 atm─▒┼č.

1 Be─čeni