For at undgå injektioner, brug execute
med %s
i stedet for hver variabel, send derefter værdien via en liste eller tupel som den anden parameter i execute
. Her er et eksempel fra dokumentationen
:
c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))
Bemærk, at dette bruger et komma , ikke % (som ville være en direkte strengsubstitution, ikke escaped). Gør ikke dette :
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""" % (max_price,))
Derudover må du ikke bruge enkelte anførselstegn omkring stillingsindehaveren ('%s'
). ) hvis parameteren er en streng, da driveren leverer disse.