我正在尝试使用以下行删除我的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回调中的例外Trackback(最近的最新电话): 文件" C: Program Files Python36 lib tkinter__init__。py",第1699行,in call 返回self.func(*args) 文件" i:/onedrive/pycharmprojects/tkinter/mainprogram/main.py",第36行,在delete_data_entry中 C.Execute('从测试中删除where memberId = idbox.get()')sqlite3.erationalerror:接近"(":语法错误
我已经陷入了相当长的一段时间,并感谢您的帮助
更多代码(创建成员变量):
memberid = str(uuid.uuid4())
print(memberid[0:8])
c.execute("INSERT INTO Test(memberID, fullname, username, password) VALUES (?, ?, ?, ?)",
(memberid[0:8], fullnameBox.get(), usernameBox.get(), passwordBox.get()))
conn.commit()
考虑@philip金发和语法的评论
c.execute('DELETE FROM Test WHERE memberID = ' + memID)
问题在于您正在传递44ba195d
,因为memberID
和SQLite期望其他东西,也许是整数。这个
DELETE FROM Test WHERE memberID = 44ba195d
如果成员为整数,将导致
promationatiatiatiationalror:未被认可的令牌" 44ba195d"
检查您从idBox
获得的内容。
编辑:由于您使用uuid
作为会员ID,因此必须将SQL语句更改为
c.execute("DELETE FROM Test WHERE memberID = '" + memID + "'")
如果数据类型不是整数,则必须在引号中。
警告:请记住,这些SQL句子容易受到SQL注入的影响。您切勿使用字符串串联( )或字符串参数插值(%)将变量传递到SQL查询字符串。一个人可以输入' OR memberID LIKE '%1%
并删除所有行,其中会员In成员包含值1。