2017-02-21 13 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...] 

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

し、リストを追加:

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

は5列に、表1のテーブルを作成します。テーブルへの要素:

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) 
関連する問題