Python MySQL 语法错误 - 重复 key 更新

标签 python mysql

我有以下 MySQL + Python 代码:

data = json.loads(decoded_response)

insert_values = []
cursor = cnx.cursor()
add_data = """INSERT INTO pb_ya_camps (camp_id,camp_name) VALUES (%s,%s) ON DUPLICATE KEY UPDATE VALUES (%s,%s)"""

for jsonData in data["data"]:
        if "No" in jsonData["StatusArchive"]:
                print("...processing campaign ",jsonData["Name"],"into the database.")
                insert_values.append((jsonData["CampaignID"],jsonData["Name"]))

try:
        cursor.executemany(add_data,(insert_values,insert_values))

此时会产生以下错误:

MYSQL ERROR: Failed processing format-parameters; 'MySQLConverter' object has no attribute '_tuple_to_mysql'

据我了解,它不喜欢以下内容:

cursor.executemany(add_data,(insert_values,insert_values))

我相信你不能用 Python 做到这一点...但我的问题可能源于不正确的 MySQL 语法。可以请您看一下吗?

INSERT INTO pb_ya_camps (camp_id,camp_name) VALUES (%s,%s) ON DUPLICATE KEY UPDATE VALUES (%s,%s)

我不确定如何正确使用重复 key 更新,而不必重新指定所有值...<<<--- 这是主要问题。

我已阅读以下内容:LINK TO PREVIOUS EXAMPLE但是我不想依赖 KEY UPDATE col1 = VALUES(col1),因为在我的脚本的另一部分中,我有太多列,无法继续作为每列的 col = value 的一部分列出...

谢谢!

最佳答案

根据 MySQL 引用手册,INSERT ... ON DUPLICATE KEY UPDATE 的 MySQL 语法为:

INSERT INTO table (`a`, `b`, `c`) 
VALUES (1, 2, 3)
    ON DUPLICATE KEY UPDATE `c` = `c` + 1;

因此,在您的情况下(请注意,编写 camp_id = %scamp_id = VALUES(%s) 是相同的:

INSERT INTO `pb_ya_camps` (`camp_id`, `camp_name`) 
VALUES (%s,%s) 
    ON DUPLICATE KEY UPDATE `camp_id` = VALUES(%s), `camp_name` = VALUES(%s)

有关语法的更多信息,请访问 MySQL Reference Manual .

关于Python MySQL 语法错误 - 重复 key 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765212/

相关文章:

php mysql 插入语法错误

python - 如何在python中更改numpy.random.rand数组的数据类型?

python - 使用正则表达式进行 Scrapy 日期捕获

python - Tensorflow - 如何处理序列输入数据(序列数据输入层)

python - Pandas QuarterBegin() : Possible Bug when calculating First of quarter

php - 如何将一个表中的用户值查询到列标题并获取标题下的值?

php - 将数据保存到SQL并根据json数组计数显示它们

python - numpy 数组的索引到整数元组?

mysql - 无法对 phpmyadmin 数据库执行 JDBC 请求(未找到适合 jdbc 的驱动程序 :mysql://localhost:3306/ck)

mysql - 从两个表中获取几列的总和结果不正确