ホームページ >データベース >mysql チュートリアル >Python で変数に格納されたパラメータ化された SQL クエリを実行するにはどうすればよいですか?
Python で SQL クエリを処理する場合、SQL インジェクションを防ぐためにパラメータ化されたクエリを使用することが重要です。これには、パラメーターのプレースホルダー (「%s」など) を実際の値を含む変数に置き換えることが含まれます。
よくある質問は、パラメーター化された SQL クエリを変数に保存して実行できるかどうかです。構文とこれを実現する方法を見てみましょう。
次の Python コードを考えてみましょう:
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3 cursor.execute(sql)</code>
残念ながら、cursor.execute()
はクエリ文字列とオプションのパラメータの最大 3 つのパラメータを受け入れるため、このコードはエラーをスローします。この例には、タプル (sql, var1, var2, var3)
で表される 4 つのパラメーターがあります。
変数からパラメータ化された SQL クエリを実行するには 2 つの方法があります:
方法 1: パラメータを展開する
クエリとパラメータを含むタプルのパラメータを cursor.execute()
に展開できます:
<code class="language-python">sql_and_params = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3 cursor.execute(*sql_and_params)</code>
これにより、タプルが 4 つのパラメータに拡張されますが、不格好に見えるかもしれません。
方法 2: クエリとパラメータを分離する
わかりやすくするために、SQL クエリとパラメータを 2 つの変数に分けることが最善です:
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)" args = (var1, var2, var3) cursor.execute(sql, args)</code>
このアプローチはより簡潔で、読みやすく、保守しやすいです。
要約すると、Python で変数からパラメーター化された SQL クエリを実行する場合は、パラメーターを展開するか、クエリとパラメーターを別の変数に分離する必要があります。 2 番目の方法は、よりシンプルでわかりやすいため、通常は推奨されます。
以上がPython で変数に格納されたパラメータ化された SQL クエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。