1

テーブルの名前とテーブルに挿入する情報をパラメーターとして渡そうとしています。私が思いついたクエリは以下のとおりです。

sql = """INSERT INTO `%s` (title,link,description) VALUES(%%s,%%s,%%s)""" % (feed,title_xml,link_xml,description_xml)
cursor.execute(sql)

ただし、次のエラーが発生します。

Traceback (most recent call last):
  File "slicer_1.py", line 41, in <module>
    sql = """INSERT INTO `%s` (title,link,description) VALUES(%%s,%%s,%%s)""" %(feed,title_xml,link_xml,description_xml)
TypeError: not all arguments converted during string formatting

ここで何が問題なのですか?

4

1 に答える 1

1

あなたは%%最後の 3 で 2 倍を持ってい%sます。これは%s、文字列置換で最初の値のみが置換されることを意味します。つまり、置換される値を 1 つだけ渡すことができます。おそらく、他の 3 つを呼び出しに渡してexecute、SQL ライブラリの安全な置換で処理するつもりだったのでしょうか? それか%、最初のステップですべてが置き換えられるように、4 つすべてを 1 つにする必要があります。(MySQLdb のようなものでVALUESデータをパラメータ化できるかどうかはわかりません。)

編集:2番目の提案を採用する場合、おそらく次のようにしたいと思うでしょう:

"""INSERT INTO `%s` (title,link,description) VALUES("%s","%s","%s")""" % (feed,title_xml,link_xml,description_xml)
于 2013-10-13T19:12:09.583 に答える