2013-05-10 66 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