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

Python :meilleure pratique et moyen le plus sûr de se connecter à MySQL et d'exécuter des requêtes

Pour éviter les injections, utilisez execute avec %s à la place de chaque variable, puis passez la valeur via une liste ou un tuple comme second paramètre de execute . Voici un exemple tiré de la documentation :

c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
          WHERE price < %s""", (max_price,))

Notez que ceci utilise une virgule , pas % (qui serait une substitution de chaîne directe, non échappée). Ne fais pas ça :

c.execute("""SELECT spam, eggs, sausage FROM breakfast
          WHERE price < %s""" % (max_price,))

De plus, vous ne devez pas utiliser de guillemets simples autour du titulaire du poste ('%s' ) si le paramètre est une chaîne car le pilote les fournit.