Para evitar injeções, use
execute
com %s
no lugar de cada variável, então passe o valor por meio de uma lista ou tupla como o segundo parâmetro de execute
. Aqui está um exemplo da documentação
:c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))
Observe que isso está usando uma vírgula , não % (que seria uma substituição direta de string, sem escape). Não faça isso :
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""" % (max_price,))
Além disso, você não deve usar aspas simples em torno do titular da posição (
'%s'
) se o parâmetro for uma string, pois o driver os fornece.