2017-12-23 16 views
0

私はSQLite3を使用しています。SQLITE3 - データをループの列に入れよう

私のSQLテーブルでは、私は50列のテーブルを持っています。そして、各列に50個の要素を持つMy_Listの各値を入れたいと思います。

私のテーブルにデータを入れるためにPythonでループをコーディングする方法はありますか?私はそれを見つけることを試みたが何も取得できませんでした...

3つの変数の代わりに、50のための私の現在のコードは次のとおりです。

import sqlite3 
conn = sqlite3.connect("testdatabase.db") 
c.execute('''CREATE TABLE mytable (Column1 text, Column2 text, Column3, 
text) ''') 
c.execute('''INSERT INTO mytable (Column1, Column2, Column3) VALUES (?, 
?, ?)''', (myliste[0], myliste[1], myliste[2]) 

conn.commit() 

はどうもありがとうございました。

Lcs

+0

次に動的paramterizationのプレースホルダの構築を検討これまでに試したことがあります。 StackOverflowの人々は、あなたの質問がはっきりしていて、あなた自身の問題を解決するために何らかの努力をしてくれたら助けになるでしょう。 –

答えて

0

私はあなたが何をしようとしているかを見ています。あなたはほとんどそれを持っています。あなたが持っているのは、1行のデータを書くことです。ちょうどループにそれを入れて、あなたは、テーブル全体書くことができます:あなたはすでに列のリストを持っている場合は、ご自身で下記の変数columnsを置き換える、50列を作成するには

import sqlite3 

conn = sqlite3.connect("testdatabase.db") 
conn.execute("CREATE TABLE mytable (Column1 text, Column2 text, Column3 text)") 

mytable = [ 
    ('a', 'b', 'c'), 
    ('d', 'e', 'f'), 
] 

for myliste in mytable: 
    conn.execute("""INSERT INTO 
      mytable (Column1, Column2, Column3) 
      VALUES (?, ?, ?)""", 
     myliste) 

conn.commit() 

更新

を:

conn = sqlite3.connect("testdatabase.db") 
conn.execute('DROP TABLE IF EXISTS mytable') 

# Create ['Column1', 'Column2', ..., 'Column50'] 
columns = ['Column%d' % n for n in range(1, 51)] 

# Create 'Column1 TEXT, ... Column50 TEXT' 
columns_declaration = ', '.join('%s TEXT' % c for c in columns) 

conn.execute("CREATE TABLE mytable (%s)" % columns_declaration) 

conn.commit() 
+0

ありがとうございました。 しかし、私は50列のような場合はどうすればいいですか? ... mytable(Column1、Column2 ....)を書く必要がありますか?Column50まで続きますか? – Skyly83

+0

カラム名のリストはどこかにありますか? –

+0

はい、私は前回のコメントにコード全体を入れていませんでした。なぜなら、それは長すぎるかもしれないからです。しかし、直前に50列ごとに入力しました。 テーブル内の列の番号を参照する方法はありますか?例えばpythonのリストのように:mytable [3]は3番目の列を取得する – Skyly83

0

私はcsvファイルを作成することをお勧めこのpostで同様の質問に答えた後、行ごとが本当に遅い、とTHIであるため、insert intoを使用してbulk insertの代わりに使用列や行の数を気にする必要はありません。私はSQL Serverのためにそれをやったが、私はかなりsqliteで動作すると確信しています。

0

はSQLでは、あなたはすべての列が追加され、値が同じテーブルの順番に並んすべて列のデータが含まれているを想定しINSERT INTOで指定された列を省略することができます。あなたの入力がどのように見える(2-3列にスケールダウンすることができる)を使用すると、出力は次のようになりたいものと何かを示す下さいでしょう

placeholders = ', '.join(['?'] * 50) 

c.execute('''INSERT INTO mytable VALUES ({})'''.format(placeholders), mylist) 
関連する問題