Tkinter 按钮插入 sqlite table 失败
Tkinter button inserting into sqlite table fails
嘿,我正在制作一个使用 sqlite 作为数据库的小型 tkinter 应用程序。
在尝试向 table 中插入一行时,我经常遇到错误。按下按钮时发生。
from tkinter import *
import sqlite3
pol=sqlite3.connect('/home/tom/Documents/VScode/bazalogowanie/baza.db')
kurs=pol.cursor()
kurs.execute('CREATE TABLE IF NOT EXISTS bazal (id INTEGER PRIMARY KEY AUTOINCREMENT, login TEXT, haslo, TEXT)')
##def zapis(login, haslo):
##pass
def odczyt():
cala_baza = kurs.execute('SELECT * FROM bazal')
for uzytkownik in cala_baza:
print(uzytkownik)
def koniec():
pol.commit()
pol.close()
exit()
root=Tk()
root.geometry("400x400")
topFrame = Frame(root).pack()
bottomFrame = Frame(root).pack(side = "bottom")
Label(root, text="LOGIN").pack()
LOGIN=Entry(root)
LOGIN.pack()
root.title("BAZA LOGOWANIA")
Label(root, text="HASŁO").pack()
HASLO=Entry(root)
HASLO.pack()
login = LOGIN.get()
haslo = HASLO.get()
Button(root, text = "Login", command=lambda:kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo})"')).pack()
Button(root, text="def log", command=lambda:odczyt()).pack()
Button(root, text= "zamknij", command=lambda:koniec()).pack()
root.mainloop()
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.8/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/home/tom/Documents/VScode/bazalogowanie/baza logowanie.py", line 38, in <lambda>
Button(root, text = "Login", command=lambda: kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo})"')).pack()
sqlite3.OperationalError: incomplete input
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.8/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/home/tom/Documents/VScode/bazalogowanie/baza logowanie.py", line 38, in <lambda>
Button(root, text = "Login", command=lambda: kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo})"')).pack()
sqlite3.OperationalError: incomplete input
我不知道这个错误是从哪里来的
我可以寻求帮助吗?
我得到了解决方案你的代码中有一个简单的错误。
通常,当您错过关闭代码中的任何括号时会出现此错误
改变
Button(root, text = "Login", command=lambda:kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo}")')).pack()
到
Button(root, text = "Login", command=lambda:kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo})"')
错误是因为你在括号后加了双引号 ("{login}","{haslo})"
)。
你可以在这个link.
上看到同样的错误解决方法
嘿,我正在制作一个使用 sqlite 作为数据库的小型 tkinter 应用程序。
在尝试向 table 中插入一行时,我经常遇到错误。按下按钮时发生。
from tkinter import *
import sqlite3
pol=sqlite3.connect('/home/tom/Documents/VScode/bazalogowanie/baza.db')
kurs=pol.cursor()
kurs.execute('CREATE TABLE IF NOT EXISTS bazal (id INTEGER PRIMARY KEY AUTOINCREMENT, login TEXT, haslo, TEXT)')
##def zapis(login, haslo):
##pass
def odczyt():
cala_baza = kurs.execute('SELECT * FROM bazal')
for uzytkownik in cala_baza:
print(uzytkownik)
def koniec():
pol.commit()
pol.close()
exit()
root=Tk()
root.geometry("400x400")
topFrame = Frame(root).pack()
bottomFrame = Frame(root).pack(side = "bottom")
Label(root, text="LOGIN").pack()
LOGIN=Entry(root)
LOGIN.pack()
root.title("BAZA LOGOWANIA")
Label(root, text="HASŁO").pack()
HASLO=Entry(root)
HASLO.pack()
login = LOGIN.get()
haslo = HASLO.get()
Button(root, text = "Login", command=lambda:kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo})"')).pack()
Button(root, text="def log", command=lambda:odczyt()).pack()
Button(root, text= "zamknij", command=lambda:koniec()).pack()
root.mainloop()
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.8/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/home/tom/Documents/VScode/bazalogowanie/baza logowanie.py", line 38, in <lambda>
Button(root, text = "Login", command=lambda: kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo})"')).pack()
sqlite3.OperationalError: incomplete input
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.8/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/home/tom/Documents/VScode/bazalogowanie/baza logowanie.py", line 38, in <lambda>
Button(root, text = "Login", command=lambda: kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo})"')).pack()
sqlite3.OperationalError: incomplete input
我不知道这个错误是从哪里来的 我可以寻求帮助吗?
我得到了解决方案你的代码中有一个简单的错误。 通常,当您错过关闭代码中的任何括号时会出现此错误
改变
Button(root, text = "Login", command=lambda:kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo}")')).pack()
到
Button(root, text = "Login", command=lambda:kurs.execute(f'INSERT INTO bazal (login, haslo) VALUES ("{login}","{haslo})"')
错误是因为你在括号后加了双引号 ("{login}","{haslo})"
)。
你可以在这个link.
上看到同样的错误解决方法