python - 使用 MySQL python 模块插入或更新行是否存在

标签 python mysql list python-2.7 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() 

此代码查询执行失败。有人可以指出它有什么问题吗?非常感谢您的帮助。

最佳答案

试试这个:

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/

相关文章:

python-3.x - 将逗号分隔的字符串转换为 pandas 中的列表

python - 用规则统一字典列表的最快方法?

python - .bash_profile.pysave 究竟是什么?

python - 在 Python 中根据上下文注入(inject)静态类属性

r - 命名嵌套列表

python - 如何从位于 3 索引的倍数的列表中获取所有数字

python - 无效的 Django 表单

mysql - 使用 mysql_affected_rows 来防止竞争条件

php - laravel mysql数据库同一页面多个表单提交表不更新

php - 将 ORDER 添加到 SELECT 请求