You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyMySQL中INSERT ON DUPLICATE KEY UPDATE的元组参数问题

解决MySQL INSERT ON DUPLICATE KEY UPDATE的参数传递错误

问题出在参数传递的方式上:你的SQL语句里总共有7个插入占位符加2个更新占位符,一共9个%s,但你给execute传了两个独立的元组。而MySQL游标execute方法只接受一个参数序列,它只会读取第一个元组的7个值,剩下的2个占位符找不到对应参数,所以抛出TypeError: not enough arguments for format string。

解决方法:合并两个元组

把insert_values和update_values合并成一个元组后再传给execute,让占位符和参数数量完全匹配。

错误写法

# 错误:分开传递两个元组
cursor.execute(insert_update_sql, insert_values, update_values)

正确写法

# 正确:合并两个元组为一个
combined_params = insert_values + update_values
cursor.execute(insert_update_sql, combined_params)

逻辑验证

假设你构造后的SQL是这样的:

INSERT INTO your_table (col1, col2, ..., col7) VALUES (%s,%s,%s,%s,%s,%s,%s) ON DUPLICATE KEY UPDATE colX=%s, colY=%s

合并后的combined_params是一个9元素的元组,刚好对应9个%s占位符,参数与占位符完全匹配后就能正常执行。

内容的提问来源于stack exchange,提问作者Jorge García Otero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:54:33