0

我在“cusrosr.executemany() 上收到错误。插入单个列的第一条语句(使用 recs1)执行得很好,并插入了两条记录。第二条插入(recs2)有错误:

格式字符串的参数不足

sql="""CREATE  TABLE TestTable (
        Col1 VARCHAR(45) NULL ,
        Col2 VARCHAR(45) NULL );"""
cursor.execute(sql)

recs1=  [("Spam"), ("Ham")]
recs2=  [("Spam", "Sausage"), ("Ham", "Plate")]

try:
    cursor.executemany("""insert into TestTable (Col1) values (%s );""", recs1)
    db.commit()
    print "cursor.rowcount: ",cursor.rowcount
    cursor.executemany("""insert into TestTable (Col1, Col2) values (%s , %s);""", recs2)
    db.commit()

except Exception as e:
    print 'Error: ', e
    db.rollback()
  • 使用的软件:
  • Python 2.7.4
  • 从 MySQL-python-1.2.4b4.win32-py2.7 安装的 MySql。('1.2.4b4')
  • MySql '5.5.27-log'(在 AWS RDS 上)。

有任何想法吗?

4

1 回答 1

0

我还没有测试你的代码,但只是通过查看它,它看起来你正在用两个 %s 出现的字符串提供一个值 - 因此“没有足够的参数用于格式字符串”错误。

你可能想做这样的事情:

recs2, recs3 =  [("Spam", "Sausage")], [("Ham", "Plate")]
cursor.executemany("""insert into TestTable (Col1, Col2) values (%s , %s);""", recs2, recs3)

同样,我没有测试任何东西,所以执行风险自负。

于 2013-05-10T17:39:02.037 回答