Verwenden Sie execute
, um Injektionen zu vermeiden mit %s
anstelle jeder Variablen übergeben Sie dann den Wert über eine Liste oder ein Tupel als zweiten Parameter von execute
. Hier ist ein Beispiel aus der Dokumentation
:
c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))
Beachten Sie, dass hier ein Komma verwendet wird , nicht % (was eine direkte Zeichenfolgensubstitution wäre, nicht maskiert). Tu das nicht :
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""" % (max_price,))
Außerdem dürfen Sie keine einfachen Anführungszeichen um den Positionsinhaber herum verwenden ('%s'
), wenn der Parameter eine Zeichenfolge ist, da der Treiber diese bereitstellt.