【发布时间】:2025-12-25 01:25:07
【问题描述】:
当我尝试将一些值从我的数据库插入到我的条目时,我不知道自己做错了什么。我有一个使用相同代码的主界面运行良好,但我创建了一个辅助窗口并试图使几乎相同的代码工作但它不工作。它给了我这个错误:
sqlite3.OperationalError: 输入不完整
这是我的代码:
myid = StringVar()
myname = StringVar()
myowner = StringVar()
mycel = StringVar()
id_entry = Entry(windows2, textvariable=myid)
name_entry = Entry(windows2, textvariable=myname)
owner_id = Entry(windows2, textvariable=myowner)
cel_id = Entry(windows2, textvariable=mycel)
btn_search = Button(windows2, text='SEARCH', command=lambda: search())
btn_search.place(x=930, y=12, width='60', height='26')
def search():
conn = sqlite3.connect('db1.db')
c = conn.cursor()
c.execute("SELECT * FROM regis WHERE idcard=" + myid.get())
theuser = c.fetchall()
for user in theuser:
myid.set(user[0])
myname.set(user[1])
myowner.set(user[8])
mycel.set(user[9])
conn.commit()
if theuser:
messagebox.showinfo(title='ID Found', message='User found')
else:
messagebox.showerror(tittle=None, message='Wrong ID')
【问题讨论】:
-
在执行SQL语句前打印出
myid.get()的值,看看是否有你期望的值。 -
@acw1668 它显示了同样的错误,这很有趣,因为我尝试使用在我的第一个窗口中运行良好的相同代码,但在我的第二个窗口中不起作用
-
您很可能使用
Tk()作为您的第二个窗口。请改用Toplevel()。 -
@acw1668 wow mate,它现在可以工作了,我还没有考虑过=D
-
另一个建议:在 SQL 语句中使用占位符,如
c.execute("SELECT * FROM regis WHERE idcard=?", [myid.get()]),以避免 SQL 注入。
标签: python python-3.x sqlite tkinter tkinter-entry