MySQLdb executemany使用列表作为输入?

问题描述:

我想用我的计划内的executemany存储20条记录一次,继承人它在文档中说...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() 

这工作得很好,并且它会犯的第一个关键字列表,与日期,时间和位置一起,我不希望有重复PARAMS 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 = [(str(keywords[i]), date, time, position[i]) for i in range(20)] 
+0

非常感谢!所以你可以在定义一个变量时循环?我认为这将有其他应用程序传递给函数等参数? – jjjjj 2012-04-16 19:32:10

+1

这是一个列表理解http://www.diveintopython.net/native_data_types/mapping_lists.html – vartec 2012-04-16 19:34:59

+0

感谢您的链接 – jjjjj 2012-04-16 19:36:34