使用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 单个参数
Étant donné que la personne qui a posé la question n'a pas mentionné quelle bibliothèque est utilisée pour se connecter à la base de données, on suppose que vous utilisez
mysqldb
.Vous pouvez jeter un œil au code source de
mysqldb
:Comme vous pouvez le voir, le paramètre args est une séquence ou un mappage facultatif, c'est-à-dire que le type attendu du paramètre args est
list
outuple
.Regardez ensuite les paramètres d'entrée que vous avez donnés :
Donc, la solution est simple :
Un petit détail entre en jeu ici.
Lors de la création d'un tuple avec un seul élément, vous devez ajouter une virgule, sinon l'interpréteur le créera sous forme de chaîne.