Запись данных до таблицы в 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],
    ...
]
→ Ссылка