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

%%在最后三个上加倍%s。这意味着%s在字符串替换中只有第一个将被替换,这意味着您只能传递一个要替换的值。也许您打算将其他三个传递给execute由 SQL 库的安全替换处理的调用?要么这样,要么你需要让所有四个都只有一个%,这样他们就可以在第一步中被替换掉。(我不确定 MySQLdb 之类的东西是否可以让您参数化VALUES数据。)

编辑:如果您接受第二个建议,您可能希望这样做:

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