使用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 单个参数
Memandangkan penyoal tidak menyebut perpustakaan mana yang digunakan untuk menyambung ke pangkalan data, andaikan anda menggunakan
mysqldb
.Anda boleh melihat kod sumber
mysqldb
:Seperti yang anda lihat, parameter args ialah jujukan atau pemetaan pilihan, iaitu, jenis parameter args yang dijangkakan ialah
list
atautuple
.Kemudian lihat kembali pada parameter input yang anda berikan:
Jadi, penyelesaiannya mudah sahaja:
Perincian kecil terlibat di sini.
Apabila mencipta tuple dengan hanya satu elemen, anda perlu menambah koma, jika tidak, jurubahasa akan menciptanya sebagai rentetan.