0

「cusrosr.executemany() でエラーが発生しました。単一の列に挿入する最初のステートメント (recs1 を使用) は正常に実行され、2 つのレコードを挿入します。2 番目の挿入 (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()
  • 使用したソフトウェア:
  • パイソン 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

私はあなたのコードをテストしていませんが、それを見るだけで、1 つの値だけで %s が 2 回出現する文字列をフィードしているように見えます。

あなたはおそらく次のようなことをしたいと思うでしょう:

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

繰り返しますが、私は何もテストしていませんので、自己責任で実行してください。

于 2013-05-10T17:39:02.037 に答える