У меня есть два списка в Python3 для вставки в базу данных SQLite. Следующий код работает, но я уверен, что есть лучший способ.Вставить списки в базу данных SQLite
cur.execute("CREATE TABLE my_table (id INT, vegetables TEXT, fruits TEXT)")
ls_vegetables = ['artichoke ', 'broccoli', 'celery']
ls_fruits = ['apple', 'banana', 'coconut']
# Vegetables loop
id = 1
for v in ls_vegetables:
cur.execute("INSERT INTO my_table(ID, vegetables) VALUES (?,?)", (id,v))
id += 1
conn.commit()
# Fruits loop
id=1
for f in ls_fruits:
cur.execute ("UPDATE my_table SET fruits=? WHERE ID=?", (f,id))
id += 1
conn.commit()
Могу ли я иметь только одну петлю?
Это эскиз моего стола:
+----+------------+---------+
| id | vegetables | fruits |
+====+============+=========+
| 1 | artichoke | apple |
+----+------------+---------+
| 2 | broccoli | banana |
+----+------------+---------+
| 3 | celery | coconut |
+----+------------+---------+
Ваше решение было бы совершенным, но у меня все еще есть ошибка: 'Текущее заявление использует 3, и есть 2 поставленных'. Это весь код: импорт sqlite3 сопп = sqlite3.connect (": памяти:") дворняжка = conn.cursor() cur.execute ("CREATE TABLE my_table (ID INT, овощи TEXT , фрукты ТЕКСТ) ") ls_vegetables = [ 'артишок', 'брокколи', 'сельдерея'] ls_fruits = [ 'яблоко', 'банан', 'кокосовое'] cur.executemany (" INSERT INTO my_table (ID, овощи, фрукты) VALUES (?,?,?) ", Перечислять (zip (ls_vegetables, ls_fruits), 1)) conn.commit() – isar
Код в комментариях нечитабельный, но это действительно показало мне проблему w/my code - 'enum erate' возвращает 2 вещи (int и 2-элементный кортеж), поэтому они должны быть распакованы - редактирование для этого –