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

変数を使用して Python でパラメータ化された SQL クエリを効果的に実行するにはどうすればよいですか?

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

How Can I Effectively Execute Parameterized SQL Queries in Python Using Variables?

Python でのパラメータ化された SQL クエリと変数の効果的な使用

SQL クエリを変数に保存すると、コードの柔軟性と可読性が向上します。この記事では、変数を活用して Python でパラメータ化された SQL クエリを効率的に実行する方法について説明します。

パラメータ化された SQL クエリについて

パラメータ化された SQL クエリは、SQL ステートメントを変数データから分離することで SQL インジェクションを防ぎます。 Python では、これは cursor.execute() メソッドによって実現されます。ここで、プレースホルダー (%s) は変数を表します。

変数の割り当て

SQL クエリを変数に保存するには、それを文字列変数に割り当てます。例:

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

複数の変数を使用してクエリを実行する

複数の変数を使用してパラメーター化されたクエリを実行するには、変数をシーケンスまたはマップとして渡します。ただし、execute() メソッドは 3 つのパラメーターを予期しており、SQL クエリを含むとこの制限を超えます。

解決策: 変数を分割する

この問題を解決するには、SQL クエリと変数を別々の変数とパラメータに分割できます。 1 つの方法は、タプルの要素に変数を代入することです:

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

ただし、このメソッドはパラメーターの数が原因でエラーをスローします。代わりに、それを execute() に渡すときは、タプルを次のように分割する必要があります:

<code class="language-python">cursor.execute(sql_and_params[0], sql_and_params[1:])</code>

代替: 個別の変数

より読みやすい方法は、SQL クエリとそのパラメーターに別個の変数を使用することです。

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

このメソッドは、SQL ステートメントとそのパラメーターを明確に分離します。

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

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