【问题标题】:MySQLdb executemany using a list as input?MySQLdb 使用列表作为输入执行吗?
【发布时间】:2012-04-16 19:24:17
【问题描述】:

我想在我的程序中使用 executemany 一次存储 20 条记录,这是文档中所说的...

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()

上面是我试图避免的一个例子(我知道索引需要增加才能工作!;))

当我尝试将整个列表作为值传递时出现错误,我需要一次传递一个,有什么想法吗?可以执行很多这样做,还是我应该制作一个循环并一次更新它们?但我很确定我试过了,但我得到了类似的错误?不过我没记下来。

【问题讨论】:

    标签: python mysql-python


    【解决方案1】:
    params = [(str(keywords[i]), date, time, position[i]) for i in range(20)]
    

    【讨论】:

    猜你喜欢
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2012-06-08
    • 2011-06-02
    • 2011-12-04
    相关资源
    最近更新 更多