#python #mysql
Вопрос:
Мне трудно найти, что не так со следующим запросом в моем скрипте python. Я получил следующее сообщение : «Недостаточно параметров для инструкции sql».
Запрос и фрагмент кода:
sql_insert_with_param = """INSERT INTO events_fb (event_url, url, title, address_1, address_2, event_by,
start_time, end_time, ticket, going, interested, event_image_url, createdAt, image_path, description) VALUES (
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) ON DUPLICATE KEY UPDATE start_time=%s, end_time=%s, event_image_url=%s, description=%s, title=%s"""
data_tuple = (event_url, url, title, address_1, address_2, event_by, start_time, end_time, ticket, going, interested, event_image_url, time.strftime('%Y-%m-%d %H:%M:%S'), output_path, description)
cursor.execute(sql_insert_with_param, data_tuple)
Это связано с частью «НА ДУБЛИРУЮЩЕМ КЛЮЧЕ», но хорошо работает без этой части.
Первичный ключ : «url»
Спасибо
Комментарии:
1. У вас есть 20
%s
в шаблоне запроса, но только 15 значений в вашем кортеже.
Ответ №1:
Вы забыли добавить параметры для
ON DUPLICATE KEY UPDATE start_time=%s, end_time=%s, event_image_url=%s, description=%s, title=%s
Ответ №2:
Поскольку вы хотите обновить новые значения, в строке используйте ЗНАЧЕНИЯ
Или добавьте параметры для пейсхолдера
sql_insert_with_param = """INSERT INTO events_fb (event_url, url, title, address_1, address_2, event_by,
start_time, end_time, ticket, going, interested, event_image_url, createdAt, image_path, description) VALUES (
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) ON DUPLICATE KEY UPDATE start_time=VALUES(start_time), end_time=VALUES(end_time), event_image_url=VALUES(event_image_url), description=(description), title=VALUES(title)"""
data_tuple = (event_url, url, title, address_1, address_2, event_by, start_time, end_time, ticket, going, interested, event_image_url, time.strftime('%Y-%m-%d %H:%M:%S'), output_path, description)
cursor.execute(sql_insert_with_param, data_tuple)