вставить 3 списка в mysql с помощью python - PullRequest
0 голосов
/ 25 марта 2020

У меня есть 3 списка вроде этого:

list_model = [2000, 2010, 2020, 1998, 2016]
list_worked = [1200, 0, 45000, 123000]
list_price = [920000, 123000, 12, 6500]

, и я хочу вставить их в MySQL базу данных, описывающую так:

+---------+------+------+-----+---------+-------+
| Field   | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| model   | int  | YES  |     | NULL    |       |
| worked  | int  | YES  |     | NULL    |       |
| price   | int  | YES  |     | NULL    |       |
+---------+------+------+-----+---------+-------+

Я пытался использовать

cursor = mydb.cursor()
cursor.execute ("INSERT INTO l90 VALUES (%i, %i, %i)" % (list_model, list_karkard, list_gheymat ))
mydb.commit()
mydb.close()

но там написано: «Ошибка типа:% i формат: номер требуется, а не список», и я не знаю, что мне следует делать, может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 25 марта 2020

Вы можете использовать cursor.executemany, используя zip, чтобы создать список кортежей для вставки:

cursor.executemany("INSERT INTO l90 VALUES (%i, %i, %i)",
                   [(m, w, p) for m, w, p in zip(list_model, list_worked, list_price)])

Обратите внимание, что это хорошая практика перечисление столбцов, в которые вы вставляете, помогает избежать проблем при изменении структуры таблиц. Вы должны написать:

cursor.executemany("INSERT INTO l90 (model, worked, price) VALUES (%i, %i, %i)",
                   [(m, w, p) for m, w, p in zip(list_model, list_worked, list_price)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...