2012-04-16 25 views
4

私はそれが文書で述べているHERESに何を、一度に20件のレコードを格納するために私のプログラム内executemanyを使用したいと思っています...リストを入力として使用しているMySQLdb executemany?

c.executemany(
    """INSERT INTO breakfast (name, spam, eggs, sausage, price) 
    VALUES (%s, %s, %s, %s, %s)""", 
    [ 
    ("Spam and Sausage Lover's Plate", 5, 1, 8, 7.95), 
    ("Not So Much Spam Plate", 3, 2, 0, 3.95), 
    ("Don't Wany ANY SPAM! Plate", 0, 4, 3, 5.95) 
    ]) 

はしかし、私は、リストに自分の価値を持っているし、むしろないだろう私のリストにインデックスを使用して、上記の18のバージョンを行います。ここで

は、以下の私のコードです...

db = connect_to_db() 
cursor = db.cursor() 
sql = "INSERT INTO gkey (keyword, date, time, position) VALUES (%s, %s, %s, %s)" 
params = [(str(keywords[0]), date, time, position[0])] 
cursor.executemany(sql, params) 
db.commit() 

これは正常に動作し、それがリストの最初のキーワードをコミットしますが、日付、時刻と位置と一緒に、私はする必要がありますする必要はありません私が手

);(!インデックスは、それは私が知って動作するためにインクリメントする必要があります)、以下のような19倍...

db = connect_to_db() 
cursor = db.cursor() 
sql = "INSERT INTO gkey (keyword, date, time, position) VALUES (%s, %s, %s, %s)" 
params = [ 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0])  
(str(keywords[0]), date, time, position[0]) 
(str(keywords[0]), date, time, position[0]) 

] 
cursor.executemany(sql, params) 
db.commit() 

私は避けるようにしようとしています何の上記の例のparamsを繰り返しエラーr私はリスト全体を値として渡してみると、一度に1つずつ、それらを渡す必要がありますか?多くのことを実行できますか?またはループを作成して一度に1つずつ更新する必要がありますか?しかし、私はそれを試みたと私はかなり確信して、私は同様のエラーがありますか?私はそれをメモしませんでした。

答えて

10
params = [(str(keywords[i]), date, time, position[i]) for i in range(20)] 
+0

ありがとうございました!変数を定義するときにループすることができますか?私はこれが他のアプリケーションをparamsを関数などに渡すときにこれを使うだろうと思いますか? – jjjjj

+1

これはリストの解説です。http://www.diveintopython.net/native_data_types/mapping_lists.html – vartec

+0

リンクありがとうございます – jjjjj

関連する問題