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

Python の変数に格納されたパラメータ化された SQL クエリを実行できますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-12 08:32:42539ブラウズ

Can I Execute Parameterized SQL Queries Stored in a Variable in Python?

Python の変数からパラメータ化された SQL クエリを実行します

SQL インジェクションを防ぐために、Python でパラメーター化された SQL クエリを実行するときは、通常、次の形式を使用することをお勧めします:

<code class="language-python">cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3)</code>

ただし、クエリを変数に保存して後で実行できるかどうかについては検討する価値があります。

execute() メソッド署名

これが機能しない理由を理解するには、execute() メソッドの署名を確認する必要があります。

<code class="language-python">cursor.execute(self, query, args=None)</code>

このメソッドには、クエリとオプションのパラメータ シーケンスまたはマップという最大 3 つのパラメータが必要です。

変数からクエリを実行してみます

変数 sql に格納されているクエリを実行しようとすると、たとえば次のようになります。

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"
cursor.execute(sql)</code>

には変数自体を含む 4 つのパラメーターが含まれているため、エラーが発生します。 sql

クエリとパラメータを分離する

変数からクエリを実行するには、クエリとパラメータを分離します。

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"
args = var1, var2, var3
cursor.execute(sql, args)</code>
この場合、

にはクエリが含まれ、sql にはパラメータが含まれます。 args を指定すると、パラメーター化されたクエリを正常に実行できます。 execute(sql, args)

別の方法

あるいは、より直観的な 2 変数アプローチを使用することもできます。

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"
cursor.execute(sql, (var1, var2, var3))</code>
このアプローチにより、クエリとパラメータに個別の変数を作成する必要がなくなります。

以上がPython の変数に格納されたパラメータ化された SQL クエリを実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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