За да избегнете инжекции, използвайте execute
с %s
на мястото на всяка променлива, след което предайте стойността чрез списък или кортеж като втори параметър на execute
. Ето един пример от документацията
:
c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))
Имайте предвид, че тук се използва запетая , а не % (което би било директна замяна на низ, а не escape). Не правете това :
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""" % (max_price,))
Освен това не трябва да използвате единични кавички около притежателя на позицията ('%s'
), ако параметърът е низ, както ги предоставя драйверът.