Sqlite3 veri tabanı hatası

import tkinter as tk
import sqlite3

form = tk.Tk()


def kayıt_yap():
girdi = entry.get()
girdi2= entry2.get()
vt = sqlite3.connect('deneme1')
im = vt.cursor()
im.execute("""CREATE TABLE IF NOT EXISTS deneme1
       (isim,soyisim)""")
im.execute("""INSERT INTO deneme1 VALUES
("")"""), repr(girdi)
vt.commit()
vt.close()

entry = tk.Entry(form)
entry2= tk.Entry(form)
buton = tk.Button(text="Kaydet", command=kayıt_yap)

entry.pack()
entry2.pack()
buton.pack()

form.mainloop()

Çalıştırdığım zaman veri tabanı boş kalıyor neden? Sanırım bir şeyi eksik yazdım ancak bulamadım

Burası pek olmamış sanki, repr(girdi) parantezin dışında kalmış. Kalmasa da isim, soyisim gibi 2 tane değerle tabloyu üretmenize rağmen 1 tane değer vermeye çalışmış olurdunuz. Şöyle olsa:

im.execute("""INSERT INTO deneme1 VALUES (?, ?)""", (girdi, girdi2))

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

ben bunu zaten denedim şöyle bir hata alıyorum bunda

table deneme1 has 1 columns but 2 values were supplied

Tabloyu ürettiğiniz satırı değiştirdiyseniz normaldir. Olay vadettiğiniz sütünların sayısı kadar değer girmek.

im.execute("""CREATE TABLE IF NOT EXISTS deneme (isim, soyisim)""")
im.execute("""INSERT INTO deneme VALUES (?, ?)""", (girdi, girdi2))

Aslında sorunun çok farklı olduğunu fark ettim garip bir şekilde tek harfli yazıları kayıt ediyor ancak 1 harften fazlasını kabul etmiyor ve şöyle bir hata veriyor

Incorrect number of bindings supplied. The current statement uses 
1, and there are 2 supplied.

Bu hatayı veren kodu atabilir misiniz? INSERT INTO yaparken ikinci parametrenin bir çeşit dizi olması gerekiyor (liste, tuple gibi).

Sorunu çok garip bit şekilde çözdüm kendi kendime deneme yaprken hata ile virgül koydum

im.execute("""INSERT INTO deneme1 VALUES (?)""", (girdi,))

Bu en sonda gördüğünüz virgülü kullanınca sorun ortadan kalkıyor ancak garip geldi normalde asıl şimdi hata vermesi gerekmez mi?

Yok, çünkü:

Virgül ile 1 elemanlı tuple haline gelmiş oldu.

Anladım biliyorum çok sıktım sizi ancak bir sorum daha olacaktı ben 2 adet sutün oluşturdum ancak sadece birini doldurabiliyorum. Kodlarımı bu şekilde nasıl değiştirmem lazım?Hata olduğunu biliyorum ancak doğrusunuda bulamadım

im.execute("""INSERT INTO deneme1 VALUES (?,?)""", (girdi,girdi2,))

Kodların tamamını atabilir misiniz?

import tkinter as tk
import sqlite3

form = tk.Tk()


def kayıt_yap():
     girdi = entry.get()
     girdi2= entry2.get()
     vt = sqlite3.connect('deneme1')
     im = vt.cursor()
     im.execute("""CREATE TABLE IF NOT EXISTS deneme1
       (isim,soyisim)""")

     im.execute("""INSERT INTO deneme1 VALUES (?,?)""", (girdi,girdi2,))

vt.commit()
vt.close()
entry = tk.Entry(form)
entry2= tk.Entry(form)
buton = tk.Button(text="Kaydet", command=kayıt_yap)

entry.pack()
entry2.pack()
buton.pack()

form.mainloop()

Bu yaptığım kısım benim deneme yaptığım yer işi çözünce kendi programıma entegre edeceğim Onun için biraz karışık ve verdiğim değerler garip olabiliyor

Bende çalıştı, sizde hata mı veriyor veriyorsa nedir?

table deneme1 has 1 columns but 2 values were supplied***

Veritabanını tek sütunla oluşturmuşsunuz, silin önce.

1 Beğeni

burdan mesaj atılıyor mu bilmiyorm profilinize girdim ama yazamdım yardımınıza ihtiyacım var lütfen geri dönerseniz çok seviniriim

Niçin forumda bir konu açmıyorsunuz?

Açtım eğer bir bilginiz varsa yardımcı olur musunuz