インジェクションを回避するには、executeを使用します %sを使用 各変数の代わりに、executeの2番目のパラメーターとしてリストまたはタプルを介して値を渡します。 。これは、ドキュメントの例
です。 :
c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))
これはカンマを使用していることに注意してください 、%ではありません (これは直接の文字列置換であり、エスケープされません)。 これを行わないでください :
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""" % (max_price,))
さらに、位置ホルダーの前後に一重引用符を使用しないでください('%s' )ドライバがこれらを提供するときにパラメータが文字列である場合。