2017-02-21 27 views
0

Я использую python 3.5 и пытаюсь вставить элементы списка в таблицу.SQLite3 - Вставка элементов списка в таблицу

списки уже определены:

list1 = [1,2,3...] 
list2 = [1,2,3...] 
list3 = [1,2,3...] 
list4 = [1,2,3...] 
list5 = [1,2,3...] 

Подключение к базе данных:

conn = sqlite3.connect('database.db') 
c = conn.cursor() 

Создать таблицу, Table1, с 5 столбцов:

def create_table(): 
    c.execute("CREATE TABLE IF NOT EXISTS Table1(Column1 TEXT, Column2 TEXT, Column3 TEXT, 
Column4 TEXT, Column5 TEXT)") 

А добавив список элементы к таблице:

def data_entry(): 
    Column1 = list1 
    Column2 = list2 
    Column3 = list3 
    Column4 = list4 
    Column5 = list5 
    c.execute("INSERT INTO Master (Column1, Column2, Column3, Column4, Column5) 
VALUES (?, ?, ?, ?, ?)", (Column1, Column2, Column3, Column4, Column5)) 
    conn.commit() 

c.close() 
conn.close() 

Когда я бегу, я получаю:

ProgrammingError: Неправильное количество привязок поставки. В текущем заявлении используется 5, и имеется 150.

Будет ли более целесообразным использовать цикл для вставки каждого списка элементов в новую строку в указанном столбце? Если да, как создать цикл для sqlite3?

Это первый раз, когда я использую sqlite3, поэтому любые предложения очень ценятся. Спасибо!

+0

вы пытаетесь введите строки или столбцы? –

+0

Я пытаюсь ввести каждый элемент списка как новую строку в указанном столбце – John

ответ

1

Вы должны цикла по спискам (при условии, что они имеют одинаковую длину):

for i in range(len(list1)): 
    c.execute("INSERT INTO Master (Column1, Column2, Column3, Column4,Column5)" 
       " VALUES (?, ?, ?, ?, ?)", 
       (list1[i], list2[i], list3[i], list4[i], list5[i])) 
+0

Работал отлично, спасибо! – John

1

Вы можете использовать некоторые методы быстрого доступа, это более эффективно:

import sqlite3 

list1 = [1, 2, 3] 
list2 = [4, 5, 6] 
list3 = [7, 8, 9] 

con = sqlite3.connect(":memory:") 
con.execute("CREATE TABLE master(col1, col2, col3)") 
con.executemany("INSERT INTO master(col1, col2, col3) VALUES (?, ?, ?)", (list1, list2, list3)) 
for row in con.execute("SELECT col1, col2, col3 FROM master"): 
    print(row)