MySQL Python ON DUPLICATE KEY UPDATE VALUES

问题描述 投票:1回答:1

我正在使用python将JSON数据上传到MySQL。我需要在insert语句中包含“ON DUPLICATE KEY UPDATE VALUES”,但是我遇到了Python中的问题。

如果我运行以下代码,一切正常......

import json
import mysql.connector

mydb = mysql.connector.connect(host=x,user=x,password=x,database=x)
cursor = mydb.cursor()

json_data = json.loads(file)

for item in json_data['data']:
   cursor.execute(
       "INSERT INTO input_1 (a,b,c,d) VALUES (%s,%s,%s,%s)",
        (item['a'],item['b'],item['c'],item['d'])
   )

但是,当我把“ON DUPLICATE KEY”粘到最后......

import json
import mysql.connector

mydb = mysql.connector.connect(host=x,user=x,password=x,database=x)
cursor = mydb.cursor()

json_data = json.loads(file)

for item in json_data['data']:
   cursor.execute(
       "INSERT INTO input_1 (a,b,c,d) VALUES (%s,%s,%s,%s) ON DUPLICATE KEY UPDATE VALUES a=%s,b=%s,c=%s", 
       (item['a'],item['b'],item['c'],item['d'])
   )

我收到以下消息:

ProgrammingError:没有足够的SQL语句参数

python mysql
1个回答
2
投票

更换:

cursor.execute("INSERT INTO input_1 (a,b,c,d) VALUES (%s,%s,%s,%s) ON DUPLICATE KEY UPDATE VALUES a=%s,b=%s,c=%s", (item['a'],item['b'],item['c'],item['d']))

有:

cursor.execute("INSERT INTO input_1 (a,b,c,d) VALUES (%s,%s,%s,%s) ON DUPLICATE KEY UPDATE VALUES a=%s,b=%s,c=%s", (item['a'],item['b'],item['c'],item['d'],item['a'],item['b'],item['c']))

sql语句要求您有7个参数而不是4个。

© www.soinside.com 2019 - 2024. All rights reserved.