使用MySQL Python模块插入或更新行如果存在
我正在使用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 部分获取这个值。