如何在Python中格式化多列的MySQL UPDATE查询?
解决MySQL 8.0.35中UPDATE语句的语法错误
你的问题出在UPDATE语句的语法格式错误——你误用了INSERT的批量列赋值写法,MySQL的UPDATE不支持SET (col1, col2, col3, col4) VALUES(...)这种语法,这就是触发1064语法错误的原因。
正确的写法
修正SQL语法,同时把item_id改成参数化占位符(避免SQL注入风险,不要直接用f-string拼接变量):
import mysql.connector item_id = 123 query = """UPDATE MyTable SET col1 = %s, col2 = %s, col3 = %s, col4 = %s WHERE item_id = %s""" items = (val1, val2, val3, val4, item_id) cursor.execute(query, items)
关键说明
- MySQL的UPDATE语句中,SET子句必须以
列名 = 赋值的形式逐个指定,多列之间用逗号分隔,这和INSERT的语法逻辑不同。 - 所有变量都通过参数化占位符
%s传递,不要直接拼接进SQL语句,这能有效避免SQL注入漏洞,同时也能规避字符串转义的问题。
内容的提问来源于stack exchange,提问作者user25994325
相关产品推荐
相关产品推荐

