Запись данных до таблицы в mysql используя питон
Пытаюсь записать в дб массив с данными но выбивает ошибка
mysql.connector.errors.InterfaceError: Failed executing the operation; Could not process parameters: str(25.03.2024), it must be of type list, tuple or dict
массив выглядит так
values = ['25.03.2024', 0, 2, 'oblačno', -2, 0, 'zamračené', 5, 8, 'oblačno', 1, 3, 'polojasno', 1.625, 2.875, 'o7dni', 7]
и код который вкладывает его так
sql_insert_query = "INSERT INTO weather_forecast (date, min_temperature_night, max_temperature_night, state_at_night, min_temperature_morning, max_temperature_morning, state_at_morning, min_temperature_day, max_temperature_day, state_at_day, min_temperature_evening, max_temperature_evening, state_at_evening, average_temperature, average_cloudiness, kedy, 7) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, 7)"
cursor.executemany(sql_insert_query, values)
Как это можно решить?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
executemany
ожидает список списков, а вы передаёте просто список. В результате значение "25.03.2024"
интерпретируется как список параметров, которые нужно подставить во все ожидаемые значения одной строки обращения к SQL
, естественно ничего не получается. Если вы хотите вставить одну строку значений, то используйте просто execute
:
cursor.execute(sql_insert_query, values)
Либо, если вы всё-таки хотите вставить не одну строку данных, а много, то можете использовать executemany
, но и в данных должен быть список списков:
values = [
['25.03.2024', 0, 2, 'oblačno', -2, 0, 'zamračené', 5, 8, 'oblačno', 1, 3, 'polojasno', 1.625, 2.875, 'o7dni', 7],
...
]