如何更新phpMyAdmin管理的SQL数据库?Python操作代码无法生效求助
问题排查与修复方案
- 检查依赖导入:确保代码开头已经导入所需库,缺失导入会直接导致函数运行失败
import mysql.connector import tkinter as tk
- 修正转义字符:你粘贴的代码中出现的
"是HTML转义后的双引号,实际编写代码时要替换为普通双引号",不要保留转义字符,否则会触发语法错误 - 增加异常捕获逻辑:原有代码未做错误捕获,无法定位是数据库连接问题、SQL语法问题还是参数取值问题,新增捕获逻辑后可直接打印错误信息定位根因
- 校验参数有效性:
- 确认
t31、t4、t5、t6为已正确初始化的tkinter输入控件,get()方法可正常取到有效值 - 确认数据库
record表中ids字段存在与t6.get()返回值匹配的记录,无匹配记录时更新操作会执行成功但不会修改任何数据,可通过cursor.rowcount查看受影响行数判断是否匹配到数据 - 若
ids字段为数值类型,需将t6.get()返回的字符串转为对应数值类型再传入SQL
- 确认
- 补充资源释放:操作完成后关闭游标与数据库连接,避免连接泄漏导致后续数据库操作失败
修正后代码
# 依赖导入请放在代码开头 import mysql.connector import tkinter as tk def update(): databases = None conn = None try: # 数据库连接,替换为你实际的连接参数 databases = mysql.connector.connect( host="localhost", user="userdata", password="", database="facerecog" ) conn = databases.cursor() # 若ids为数值类型,将t6.get()改为int(t6.get()) params = (t31.get(), t4.get(), t5.get(), t6.get()) conn.execute("UPDATE record SET names= %s, course_year= %s, positions= %s where ids = %s", params) databases.commit() # 打印受影响行数,确认是否有数据被更新 print(f"更新成功,受影响行数:{conn.rowcount}") except Exception as e: print(f"更新失败,错误信息:{e}") if databases: databases.rollback() finally: if conn: conn.close() if databases: databases.close() # 按钮创建逻辑 updatebutton = tk.Button(t, text = "Update Data", command = update) updatebutton.configure(font = ('Cooper', 13, 'bold'), bg = 'sky blue', fg = 'black') updatebutton.place(x=560, y=400)
问题相关截图

内容的提问来源于stack exchange,提问作者ewan_wabalo
相关产品推荐
相关产品推荐

