使用python执行mysql,报错了:
name = "AAA'A"
cursor.execute('select * from tb where name=%s',name)
cursor.execute('select * from tb where name=%s',(name))
都会报错
query = query % tuple([db.literal(item) for item in args])
TypeError: not all arguments converted during string formatting
但是以下不会报错:
name = "AAA'A"
cursor.execute('select * from tb where name=%s and %s',(name,1))
python27 如何过滤mysql 单个参数
因为题主并未提及连接数据库用的哪个库,所以假设你使用的是
mysqldb
。可以看一下
mysqldb
的源码:可以看到,args参数为一个可选的序列或者映射,即args参数的期望类型是
list
或者tuple
。那么回头再看一下你给的输入参数:
所以,解决方法很简单:
这里就涉及到一个小细节。
当创建只有一个元素的元组时,需要加一个逗号,否则解释器会当作一个字符串创建。