执行delete语句的时候不报错但删除不掉数据,把try和except注释掉也是一样的,同样的delete语句在mysql直接执行(把变量换成数字就可以)
cur=conn.cursor()
def dele():
delv = tk.Tk()
delv.title('村民信息删除')
delv.geometry('1000x720')
delv.configure(bg='#8AB6C9')
cur=conn.cursor()
def delete():
a=id_del
try:
cur.execute("DELETE FROM village WHERE idv= '%s'"%a)
conn.commit()
messagebox.showinfo('提示','删除成功')
except:
messagebox.showinfo('提示','删除失败')
l = tk.Label(delv, text='请输入身份证号', font=('宋体', 30), bg='#8AB6C9')
l.pack(pady=10)
id_del = tk.StringVar()
id_del = tk.Entry(delv, textvariable=id_del, width=100)
id_del.pack( padx=50, pady=20, ipady=10)
submit2 = tk.Button(delv, width=50, height=3, text='确认删除', command=lambda: [delete()])
submit2.pack(pady=20)
delv.mainloop()
数据库结构:
虽然不熟悉pymysql,但是看出来你cur.execute里面的字符串是写死了的,因此无论你怎么执行都没有符合条件的记录被删除
你是不是想用预编译sql?要保证那个%s传入是数字,并嵌入到SQL语句才行
解决了吗,我也碰到了类似的问题。调试的时候sql语句没有问题,改成select可以执行,但是delete到现在都不行