python mysql 重复 key 更新错误

标签 python mysql

所以我有这些Python代码:

id=10001
ip="10.0.0.1"
up=[80, 5555]
down=0

sql = "INSERT INTO ip(id, ip, open, closed) VALUES (%d, '%s', '%s', '%s') ON DUPLICATE KEY UPDATE open=VALUES('%s');" % (id, ip, up, down, up)

当我运行它时,它出现错误:

(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''[80, 5555]')' at line 1")

注意:当我删除时:

ON DUPLICATE KEY UPDATE open=VALUES('%s');

运行得很好

关于可能出现什么问题的任何想法吗?

最佳答案

删除 VALUES() 中的单引号。参数是列名:

INSERT INTO ip(id, ip, open, closed)
    VALUES (%d, '%s', '%s', '%s')
    ON DUPLICATE KEY UPDATE open = VALUES(%s);

但是,我希望正确的查询是:

INSERT INTO ip(id, ip, open, closed)
    VALUES (%d, '%s', '%s', '%s')
    ON DUPLICATE KEY UPDATE open = VALUES(open);

注意:open 是一个关键字,尽管它不是保留字。在我看来,这对于列名来说是一个糟糕的选择。

关于python mysql 重复 key 更新错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31644137/

相关文章:

python - Django 固定装置具有所有可能的组合?

mysql - SQL从值创建列并填充其他列

php - 通过 PHP 中的搜索表单搜索数据库

php - 在另一个表 Laravel 中查找数据透视表中所有 ID 的记录

mysql - 从包含在sql中用分号分隔的数组的列中检索任何一个最大值

python - 如何从头开始构建具有可变属性的xml模板

Python Fabric 脚本报告已完成但无法正常工作

MySql - 子表中列的 SUM() (1 :n) in a Sub-query/Outer Join using LIMIT

python - Tensorflow 的多个版本导致问题

python - 我可以欺骗 numpy.histogram 使其表现得像 numpy.bincount 吗?