2017-02-21 4 views
0

Ich benutze Python 3.5 und versuche, Listenelemente in eine Tabelle einzufügen.SQLite3 - Einfügen von Listenelementen in Tabelle

Die Listen sind bereits definiert:

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

der Verbindung zur Datenbank:

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

Erstellen Sie eine Tabelle, Tabelle 1, mit 5 Spalten:

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

und Hinzufügen der Liste Elemente auf den Tisch:

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() 

Wenn ich es laufen, erhalte ich:

ProgrammingError: Falsche Anzahl von Bindungen geliefert. Die aktuelle Anweisung verwendet 5, und es werden 150 bereitgestellt.

Wäre eine Schleife besser geeignet, um jede Elementliste als neue Zeile in der angegebenen Spalte einzufügen? Wenn ja, wie erstelle ich eine Schleife für sqlite3?

Es ist das erste Mal, dass ich sqlite3 benutze, daher werden alle Vorschläge sehr geschätzt. Vielen Dank!

+0

versuchen Sie zu Eingabe Zeilen oder Spalten? –

+0

Ich versuche, jedes Listenelement als neue Zeile in der angegebenen Spalte – John

Antwort

1

Sie eine Schleife über die Listen haben werden (vorausgesetzt, sie sind gleich lang):

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

eingegeben Perfekt gearbeitet, danke! – John

1

Sie einige Verknüpfungsmethoden verwenden können, ist es effizienter:

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) 
Verwandte Themen