如何使用tkinter输入框删除SQLite数据库中的数据,而不是指定字符串或值?

2024-04-19 10:36:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用以下行删除SQLite数据库中的行:

conn = sqlite3.connect('test.db')
c = conn.cursor()
memID = str(idBox.get())
#c.execute('DELETE FROM Test WHERE memberID = idBox.get()')

因此,我试图使用tkinter条目(idBox)从表中删除,但得到以下错误:

Tkinter回调中出现异常 回溯(最近一次呼叫): 文件“C:\Program Files\Python36\lib\tkinter_uinit_uu.py”,第1699行,在调用 返回自我功能(*参数) 文件“I:/Onedrive/PycharmProjects/TKinter/MainProgram/主.py“,第36行,在delete_data_entry中 c、 execute('DELETE FROM Test WHERE memberID=idBox.get()') sqlite3.OperationalError:靠近“(”:语法错误

我已经坚持了一段时间了,希望能得到一些帮助

其他代码(正在创建memberid变量):

^{pr2}$

Tags: 文件frompytest数据库executesqliteget
1条回答
网友
1楼 · 发布于 2024-04-19 10:36:48

考虑@Philip Blonde的评论和语法

c.execute('DELETE FROM Test WHERE memberID = ' + memID)

问题是您将44ba195d作为memberID传递,而sqlite需要其他东西,可能是整数。这个

^{pr2}$

将导致如果memberID为整数

OperationalError: unrecognited token "44ba195d"

检查您从idBox获得的内容。在

编辑:由于您使用uuid作为memberId,您必须将SQL语句更改为

c.execute("DELETE FROM Test WHERE memberID = '" + memID + "'")

如果数据类型不是整数,则必须用引号括起来。在

警告:请记住,这些SQL语句容易受到SQL注入的攻击。不应使用字符串串联(+)或字符串参数插值(%)将变量传递到SQL查询字符串。可以输入' OR memberID LIKE '%1%并删除memberID包含值1的所有行。在

相关问题 更多 >