Aby uniknąć wstrzyknięć, użyj execute
z %s
w miejsce każdej zmiennej, a następnie przekaż wartość przez listę lub krotkę jako drugi parametr execute
. Oto przykład z dokumentacji
:
c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))
Pamiętaj, że używa się przecinka , a nie % (co byłoby bezpośrednim podstawieniem ciągu, bez ucieczki). Nie rób tego :
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""" % (max_price,))
Ponadto nie wolno używać pojedynczych cudzysłowów wokół posiadacza pozycji ('%s'
) jeśli parametr jest ciągiem znaków, ponieważ sterownik je udostępnia.