使用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
。那麼回頭再看一下你給的輸入參數:
所以,解決方法很簡單:
這裡就牽涉到一個小細節。
當創建只有一個元素的元組時,需要加一個逗號,否則解釋器會當作一個字串創建。
雷雷