Python MySQL语法错误-重复密钥更新
我有以下MySQL+Python代码:Python MySQL语法错误-重复密钥更新,python,mysql,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"]:
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)
我不知道如何在不重新指定所有值的情况下正确使用重复密钥更新 下面是MySQL参考手册,
INSERT的MySQL语法。。。重复密钥更新时
为:
INSERT INTO table (`a`, `b`, `c`)
VALUES (1, 2, 3)
ON DUPLICATE KEY UPDATE `c` = `c` + 1;
因此,在您的情况下(请注意,写入camp\u id=%s
或camp\u id=value(%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)
有关语法的详细信息,请参见。而不是
(插入\u值,插入\u值))
,尝试插入\u值*2
。谢谢!因此,对于我要更新的每一列,我都要指定:“column\u name=value”?