将变量(表名、数据)传递到python mysqld查询
我试图将表的名称和要插入到表中的信息作为参数传递。我提出的问题如下:将变量(表名、数据)传递到python mysqld查询,python,mysql,sql,mysql-python,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
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
回溯(最近一次呼叫最后一次):
文件“slicer_1.py”,第41行,在
sql=“”插入“%s”(标题、链接、描述)值(%%s、%%s、%%s)”“”%(提要、标题、链接、描述)
TypeError:在字符串格式化过程中并非所有参数都已转换
这里可能有什么问题?您在最后三个
%s
上有两个%%
。这意味着在字符串替换中只替换第一个%s
,这意味着您只能传递一个要替换的值。也许您想将另外三个传递给execute
调用,由SQL库的安全替换来处理?或者,您需要使所有四个都只有一个%
,这样它们在第一步都会被替换。(我不确定像MySQLdb这样的东西是否允许您参数化值
数据。)
编辑:如果您接受第二个建议,您可能希望这样做:
"""INSERT INTO `%s` (title,link,description) VALUES("%s","%s","%s")""" % (feed,title_xml,link_xml,description_xml)
在最后三个
%s
上有两个%%
。这意味着在字符串替换中只替换第一个%s
,这意味着您只能传递一个要替换的值。也许您想将另外三个传递给execute
调用,由SQL库的安全替换来处理?或者,您需要使所有四个都只有一个%
,这样它们在第一步都会被替换。(我不确定像MySQLdb这样的东西是否允许您参数化值
数据。)
编辑:如果您接受第二个建议,您可能希望这样做:
"""INSERT INTO `%s` (title,link,description) VALUES("%s","%s","%s")""" % (feed,title_xml,link_xml,description_xml)
删除%%并将其改为%%,我现在得到的错误是---->回溯(最近一次调用最后一次):\u mysql\u exceptions.ProgrammingError:(1064,“您的SQL语法有错误;请查看与您的mysql服务器版本对应的手册,以了解在第1行“Phailin杀死23人,大规模疏散拯救数千人”附近使用的正确语法)@用户2876777:可能您需要引用
值中的值。代码更改为“”,插入%s
(标题、链接、描述)值(%s
,%s
,%s
)“%”(提要、标题xml、链接xml、描述xml)输出为-->\mysql\u异常。操作错误:(1054,“未知专栏‘旋风Phailin:印度气象部门在‘现场列表’中战胜了预测’”)谢谢你,但是,我只能传递两个变量,标题和链接。当我编辑它以添加第三个变量时,我得到以下错误-->文件“/usr/lib/python2.7/dist-packages/MySQLdb/connections.py“,第36行,在defaulterrorhandler raise errorclass中,errorvalue\u mysql\u exceptions.ProgrammingError:(1064,'您的SQL语法中有一个错误;检查与您的mysql服务器版本相对应的手册,以获得正确的语法,以便在第1行附近使用\'0”height=“1”src=“\”删除%%并将其设置为%,我现在得到的错误是-->回溯(最后一次调用):\u mysql\u exceptions.ProgrammingError:(1064,“您的SQL语法有错误;请查看与您的mysql服务器版本相对应的手册,以了解在第1行“Phailin杀死23人,大规模疏散拯救数千人”附近使用的正确语法)@用户2876777:可能您需要引用值中的值。代码更改为“”,插入%s
(标题、链接、描述)值(%s
,%s
,%s
)“%”(提要、标题xml、链接xml、描述xml)输出为-->\mysql\u异常。操作错误:(1054,“未知专栏‘旋风Phailin:印度气象部门在‘现场列表’中战胜了预测’”)谢谢你,但是,我只能传递两个变量,标题和链接。当我编辑它以添加第三个变量时,我得到以下错误-->文件“/usr/lib/python2.7/dist-packages/MySQLdb/connections.py“,第36行,在defaulterrorhandler raise ERRORCASE中,errorvalue\u mysql\u exceptions.ProgrammingError:(1064,'您的SQL语法中有一个错误;检查与您的mysql服务器版本对应的手册,以了解在第1行附近使用的正确语法”