ホームページ >データベース >mysql チュートリアル >Python で変数に格納されたパラメータ化された SQL クエリを実行するにはどうすればよいですか?

Python で変数に格納されたパラメータ化された SQL クエリを実行するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-12 06:49:43960ブラウズ

How to Execute a Parameterized SQL Query Stored in a Variable in Python?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。