我一直在尝试使用python 2.7.15和mysql.connector执行这个查询。但是由于某些原因,它似乎无法运行,并且始终返回错误:未使用所有参数。
表'updates'有一个主键,即“ID”
这是我尝试运行的SQL查询:
sql = "INSERT INTO updates (ID, insert_datetime, egroup, job_state) VALUES (%s,%s,%s,%s) ON DUPLICATE KEY UPDATE insert_datetime = VALUES(%s), egroup = VALUES(%s), job_state = VALUES(%s);"
mycursor.executemany(sql, jobUpdatesList)
这是jobUpdatesList数组中一个数组的样子:
[u'17281725', datetime.datetime(2018, 9, 10, 16, 11, 45, 724000), u'language', u'R', datetime.datetime(2018, 9, 10, 16, 11, 45, 724000), u'language', u'R']
我这样做是因为我认为需要7个参数,因为我有7个%s。
我也尝试过只使用4个参数,就像这样:
sql = "INSERT INTO updates (ID, insert_datetime, egroup, job_state) VALUES (%s,%s,%s,%s) ON DUPLICATE KEY UPDATE ID = VALUES(%s), insert_datetime = VALUES(%s), egroup = VALUES(%s), job_state = VALUES(%s);"
mycursor.executemany(sql, jobUpdatesList)
这是jobUpdatesList数组中一个数组的样子:
[u'17281725', datetime.datetime(2018, 9, 10, 16, 18, 9, 268000), u'language', u'R']
但是我遇到了以下错误:
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%s), egroup = VALUES(%s), job_state = VALUES(%s)' at line 1
我曾尝试将VALUES(%s)替换为'%s'来修复此错误,结果成功了。但是所有字段都被%s替换了,而不是值。我还尝试了不带引号的%s,例如:egroup = %s,但是仍然出现了相同的错误。
我尝试了很多方法,但似乎无法使其正常工作。我做错了什么?