2017-02-06 18 views
-2

私はL = [1,5,4,2,5,6,...around 100 elements]のようなpythonリストと100列のSQLテーブルを持っています。 Lの各要素をSQL Tableの対応する列に挿入したいとします。例として、1は1列目に挿入され、5は2列目(同じ行内)に挿入されます。 SQLクエリは次のようになりますINSERT into table (0,1,2,3,4 ... 100 column names) values (%s, %s, %s, %s .... 100 times) これを実行するより良い方法がありますか?SQLテーブルにPythonリストを挿入

+0

ための第二の部分は、あなたはすでにあなたのSQLにインデックスとして0を持っていないのですか? –

+0

@Rizzitごめんなさい –

+0

'INSERT into table(0、' –

答えて

1

あなたの質問が構文についてのみである場合、値にフィールド名と疑問符を含むリストを使用できます。

このような何か(テストしていません):

field_names = ('field1', 'field2', 'field3') # and so on 
insert_data = ('value1', 'value2', 'value3') # and so on 

db_connection.execute('INSERT INTO table (' + ','.join(field_names) + ') VALUES (' + ','.join('?' * len(insert_data)) + ')' , insert_data) 

あなたのデータ数は、テーブルのフィールドの数と同じである場合は、100のフィールド、100点の値としている場合、あなたはフィールド名(つまりを省略することができます値はテーブルの作成時にフィールドが宣言されたのと同じ方法でソートされています)。この例では

0

lst = ['2', '5', '0', '1', '9'] 
for i in enumerate(lst): 
    print i 

私たちは、これがタプルとして結果を得る:

(0, '2') 
(1, '5') 
(2, '0') 
(3, '1') 
(4, '9') 

私は[0]リスト内の0番目の要素とで0番目の列を表しあなたのSQL。 0番目の値(2)を0番目の列に保存するなどします。

ので、我々は、このための機能記述:その後、

def inserting(): 
    cursor.execute(""" 
    INSERT INTO table(i[0]) \ 
    VALUES (%s) """, (i[1]) 
    cursor.close() 

をして:

for i in enumerate(L): 
    inserting() 
0

次のようにあなたはパンダのライブラリを使用することができます。

まず、あなたのリストは、データフレームに変換

import pandas as pd 

L = [1, 2, 3, 4, 5, 6, 7] 

df = pd.DataFrame([L]) 

出力は、1行の汎用カラムとインデックスのデータフレームになります。

0 1 2 3 4 5 6 
0 1 2 3 4 5 6 7 

そしてちょうどあなたのテーブルに行を挿入するto_sqlコマンドを使用します。メソッドのドキュメントはhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.htmlです。したがって、次のようになります。

df.to_sql(table_name, connection, ...) # Look at the rest of the parameters if necessary. 

接続パラメータは、データベースとの接続を指し、このコード行より前に確立する必要があります。

0

Q:クエリの最初の部分、 V:%s

q = "insert into table (" 
for i in range(100): 
    q += str(i) + ", " 
q += "100)" 
v = "values (" 
for i in range(100): 
    v += "%s, " 
v += "%s)" 

insert_query = q+v 
conn.execute(insert_query, data_list) 
関連する問題