Я следующий код MySQL + Python:Python MySQL Ошибка синтаксиса - DUPLICATE KEY UPDATE
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 UPDATE ON DUPLICATE без необходимости повторно указать все значения ... < < < --- , что является основной проблемой.
Я прочитал следующее: LINK TO PREVIOUS EXAMPLE однако я не хочу полагаться на KEY UPDATE col1 = VALUES (col1), поскольку в дальнейшей части моего сценария я слишком много столбцов, чтобы сохранить список как часть цв = для каждого столбца ...
Спасибо!
Вместо '(insert_values, insert_values))', попробуйте 'insert_values * 2'. – Blender
[Объект MySQLConverter не имеет атрибута «_tuple_to_mysql» с использованием mysql-коннектора] (http://stackoverflow.com/questions/35910023/mysqlconverter-object-has-no-attribute-tuple-to-mysql-exception-with- mysql-c) –