将变量(表名,数据)传递给python mysql查询

时间:2013-10-13 19:08:55

标签: python mysql sql mysql-python

我正在尝试将要插入表中的表和信息的名称作为参数传递。我提出的查询如下:

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

这里可能有什么问题?

1 个答案:

答案 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)