sql >> Base de Datos >  >> RDS >> Mysql

Python:mejores prácticas y la forma más segura de conectarse a MySQL y ejecutar consultas

Para evitar inyecciones, use execute con %s en lugar de cada variable, luego pase el valor a través de una lista o tupla como el segundo parámetro de execute . Aquí hay un ejemplo de la documentación :

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

Tenga en cuenta que esto está usando una coma , no % (que sería una sustitución de cadena directa, no escapada). No hagas esto :

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

Además, no debe usar comillas simples alrededor del titular de la posición ('%s' ) si el parámetro es una cadena ya que el controlador los proporciona.