sql >> データベース >  >> RDS >> Mysql

Python:MySQLに接続してクエリを実行するためのベストプラクティスと最も安全な方法

    インジェクションを回避するには、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' )ドライバがこれらを提供するときにパラメータが文字列である場合。



    1. インデックスが範囲外であるため、インデックス2で引数をバインドできません

    2. CSVファイルをMySQLに直接インポートする

    3. SQLServerの欠落インデックス

    4. SQLServerのVARCHAR/NVARCHAR文字列に改行を挿入する方法