Mysql
 sql >> Database >  >> RDS >> Mysql

Python:best practice e modo più sicuro per connettersi a MySQL ed eseguire query

Per evitare iniezioni, usa execute con %s al posto di ogni variabile, quindi passa il valore tramite una lista o una tupla come secondo parametro di execute . Ecco un esempio dalla documentazione :

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

Nota che questo sta usando una virgola , non % (che sarebbe una sostituzione di stringa diretta, non con escape). Non farlo :

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

Inoltre, non devi utilizzare virgolette singole attorno al detentore della posizione ('%s' ) se il parametro è una stringa poiché il driver li fornisce.