Mysql
 sql >> Base de données >  >> RDS >> Mysql

Encodage de chaîne difficile en Python

Vous ne devez pas utiliser .format() pour inclure des valeurs dans une requête sql. Utilisez plutôt les paramètres sql :

sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))

cursor.execute(sql, providers)

providers est la liste d'origine.

L'idée est de générer une requête SQL avec le in testez en utilisant la syntaxe des paramètres SQL correspondant au nombre de fournisseurs dans votre liste :WHERE provider in (%s, %s) ... pour une liste à deux fournisseurs. Oui, la syntaxe du paramètre MySQLdb sql fait écho à la syntaxe de formatage python à l'ancienne, mais ce n'est pas la même chose.