无法在 mysql 中使用 tkinter 更新表

Posted

技术标签:

【中文标题】无法在 mysql 中使用 tkinter 更新表【英文标题】:Not able to update table using tkinter in mysql 【发布时间】:2021-11-21 05:10:46 【问题描述】:

我无法使用 Tkinter 在 mysql 中更新我的表。它只是不会更新。我试过检查表名在哪里不同,但事实并非如此。它没有显示错误但没有更新。

from tkinter import *

t = Tk()
t.geometry("500x500")
Label(text = 'Name:').place(x=10,y=10)
nm = Entry()
nm.place(x=55,y=12)

Label(text = 'age:').place(x=10,y=35)
ag = Entry()
ag.place(x=55,y=37)


def abcd():
        import pymysql
        x = pymysql.connect(host = 'localhost',user = 'root',password = 'admin',db ='db')
        cur = x.cursor()
        n= nm.get()
        a = ag.get()
        cur.execute('insert into sample2 values(%s, %s)',(n,a))
        x.commit()
        x.close()
        
   


Button(text ='Submit',command = abcd).place(x=40,y=65)

Label(text ='UPDATE',fg = 'white',bg = 'black',font = ('Times new roman',24,'bold')).place(x=10,y=100)
Label(text ='Enter the name to update').place(x = 5,y = 155)
b=Entry()
b.place(x = 150, y = 157)
Label(text = 'Enter new age:').place(x=5,y = 200)
nag = Entry()
nag.place(x=150,y = 202)
'''print(b)'''

def upd():
        import pymysql
        x = pymysql.connect(host = 'localhost',user = 'root',password = 'admin',db ='db')
        cur = x.cursor()
        gnd =b.get()
        anag = nag.get()
        cur.execute('update sample2 set age =%s  where name = %s',(gnd,anag))
        x.commit()
        x.close()
        t.mainloop()



Button(text = 'apply',command = upd).place(x = 200, y = 300)
                
t.mainloop()

【问题讨论】:

【参考方案1】:

这是因为UPDATE中使用的参数顺序错误:

cur.execute('update sample2 set age =%s  where name = %s',(gnd,anag)) # wrong order of arguments

所以 WHERE 子句被评估为 False,不会更新任何记录。

应该是:

cur.execute('update sample2 set age =%s  where name = %s',(anag, gnd))

【讨论】:

以上是关于无法在 mysql 中使用 tkinter 更新表的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 tkinter 将我的数据添加到 mysql

谁能告诉我如何用相同的按钮解决 python gui tkinter 但在不同的 MySQL 表中单独工作

MySQL:在自己的触发器中更新表

MySQL 无法在 FROM 多个表连接中指定要更新的目标表

使用带有 pylab/matplotlib 嵌入的 Tkinter 播放、暂停、停止功能的彩色绘图动画:无法更新图形/画布?

MySQL 无法在 FROM 子句中指定更新的目标表