使用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
。可以看一下
mysqldb
的源码:可以看到,args参数为一个可选的序列或者映射,即args参数的期望类型是
args パラメーターがオプションのシーケンスまたはマッピングであることがわかります。つまり、args パラメーターの予期されるタイプはlist
或者tuple
mysqldb
のソース コードをご覧ください:リーリー
list
またはtuple
です。次に、指定した入力パラメータを振り返ってください:
リーリーしたがって、解決策は簡単です:
これには小さな詳細が含まれます。 🎜要素が 1 つだけあるタプルを作成する場合は、コンマを追加する必要があります。追加しないと、インタープリターによって文字列として作成されます。 🎜リーリー
リーリー