我正在尝试将要插入表中的表和信息的名称作为参数传递。我提出的查询如下:
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
这里可能有什么问题?
答案 0 :(得分:1)
您在最后三个%%
上加倍%s
。这意味着在字符串替换中只会替换第一个%s
,这意味着您只能传递一个要替换的值。也许你打算将其他三个传递给execute
调用,以便由SQL库的安全替换处理?无论是那个还是你需要让所有四个只有一个%
所以它们都会在第一步中被替换。 (我不确定像MySQLdb这样的东西是否允许你参数化VALUES
数据。)
编辑:如果您采取第二个建议,您可能希望这样做:
"""INSERT INTO `%s` (title,link,description) VALUES("%s","%s","%s")""" % (feed,title_xml,link_xml,description_xml)