ホームページ >データベース >mysql チュートリアル >変数を使用して Python でパラメータ化された SQL クエリを効果的に実行するにはどうすればよいですか?
SQL クエリを変数に保存すると、コードの柔軟性と可読性が向上します。この記事では、変数を活用して Python でパラメータ化された 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 サイトの他の関連記事を参照してください。