使用MySQL Python模块插入或更新行如果存在

2 投票
1 回答
4437 浏览
提问于 2025-04-18 02:08

我正在使用MySql和Python的MySQLdb模块。我想要插入一行新数据,或者如果这行数据已经存在,就更新某些字段。

包含要输入的值的元组列表看起来是这样的:

ListTuple=[('A_val', 'B_val', 'C_val', 'D_val', 'C_val'), ('AA_val', 'BB_val', 'CC_val', 'DD_val', 'CC_val')]

MySQL的查询语句是这样的:

query="""INSERT INTO table (A, B, C, D)
             VALUES (%s, %s, %s, %s)  
             ON DUPLICATE KEY UPDATE
             C= %s
      """

try:
    Cursor.executemany(query, ListTuple)  
    Db_conn.commit()
except:
    Db_conn.rollback() 

执行这个查询时出错了。有人能告诉我哪里出了问题吗?非常感谢你的帮助。

1 个回答

3

试试这个:

query="""INSERT INTO table (A, B, C, D)
             VALUES (%s, %s, %s, %s)  
             ON DUPLICATE KEY UPDATE
             C= VALUES(C)
      """

你的查询里有5个占位符,但你的数据组只有4个值。你需要把 C 重复一下,不过 VALUES(C) 这个选项会自动从原来的 VALUES 部分获取这个值。

撰写回答