Python操作MySQL执行UPDATE语句报1064语法错误该如何解决?
问题修复方案
核心错误原因
你触发1064语法报错的根本原因是传入cursor.execute()的参数格式不符合要求:
Python 中单个元素的元组必须在末尾添加英文逗号,否则括号仅会被识别为优先级运算符,不会生成元组类型。你当前代码中的val = (new_name.get())实际为字符串类型,而execute()方法要求第二个参数必须是序列(元组/列表),导致SQL语句中的%s占位符无法被正确替换,最终触发语法错误。
修复代码
将原有代码中参数赋值和执行的部分:
val = (new_name.get()) cur.execute(update_command, val)
修改为:
# 单个元素末尾加逗号,明确为元组类型 val = (new_name.get(),) cur.execute(update_command, val)
也可以使用列表格式避免踩元组的语法坑:
val = [new_name.get()] cur.execute(update_command, val)
可选优化建议
你当前的输入校验逻辑old_uname.get()==" " or new_name.get()==" "仅能判断输入为单个空格的场景,无法覆盖内容为空、多空格的情况,可以修改为以下逻辑提升校验严谨性:
if old_uname.get().strip() == "" or new_name.get().strip() == "":
内容的提问来源于stack exchange,提问作者Rayansh Singh
相关产品推荐
相关产品推荐

