我正在使用 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()
此代码查询执行失败。有人可以指出它有什么问题吗?非常感谢您的帮助。
最佳答案
试试这个:
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 子句中获取该值。
关于python - 使用 MySQL python 模块插入或更新行是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22978027/