2013-05-10 158 views
0

我收到“cusrosr.executemany()”错误 插入单个列的第一个语句(与recs1)执行正常,并且插入两条记录 第二个插入(recs2)有一个错误:使用Python MySql executemany错误

not enough arguments for format string

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从MySQL-蟒-1.2.4b4.win32-py2.7安装2.7.4
  • MySQL的('1.2。 .4b4')
  • MySql'5.5.27-log'(在AWS RDS上)。

任何想法?

回答

0

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

你可能想要做这样的事情:

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

同样,我还没有测试任何东西,所以需要您自担风险执行。

+0

这就是“executemany”背后的全部想法。在这里看到一个例子: http://dev.mysql.com/doc/connector-python/en/myconnpy_MySQLCursor_executemany.html – 2013-05-10 18:09:03

+0

找到一个解决方案,用原来的MySql替换MySql模块mysql-connector-python-1.0.10- py2.7 – 2013-05-11 03:38:13