【发布时间】:2013-05-21 20:09:49
【问题描述】:
我有以下 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)
我不确定如何正确使用 ON DUPLICATE KEY UPDATE 而不必重新指定所有值... 这是主要问题。
我已阅读以下内容:LINK TO PREVIOUS EXAMPLE 但是我不想依赖 KEY UPDATE col1 = VALUES(col1) 因为在我的脚本的另一部分中,我有太多列要作为 col = 的一部分继续列出每列的值...
谢谢!
【问题讨论】:
-
试试
(insert_values,insert_values)),而不是insert_values * 2。