ホームページ > バックエンド開発 > Python チュートリアル > Python 内の SQL クエリで変数を安全に使用するにはどうすればよいですか?

Python 内の SQL クエリで変数を安全に使用するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-23 22:00:16
オリジナル
426 人が閲覧しました

How Can I Safely Use Variables in SQL Queries Within Python?

Python の SQL ステートメントでの変数の使用

Python で SQL ステートメントを処理する場合、クエリに変数を組み込む必要がある場合があります。これらのクエリを正しく実行するには、SQL テキスト自体の一部として変数名を含めないようにすることが重要です。

シナリオ例:

次のコードを考えてみましょう。

cursor.execute("INSERT INTO table VALUES var1, var2, var3")
ログイン後にコピー

ここで、var1 は整数、var2 と var3 は文字列です。この方法では、Python が変数名をクエリの一部として解釈し、無効な SQL ステートメントが発生するため、エラーが発生します。

解決策:

これを解決するには、SQL ステートメントでプレースホルダーを使用し、execute() メソッドを使用して変数値をタプルとして渡す必要があります。修正されたコードは次のとおりです:

cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))
ログイン後にコピー

この例では、プレースホルダー %s は変数値を表し、タプル (var1、var2、var3) にはデータベースに挿入される実際の値が含まれています。

注: 複数のパラメータを渡すにはタプルを使用することが不可欠です。単一のパラメータを渡す必要がある場合でも、末尾にカンマを付けたタプルを使用する必要があります。

cursor.execute("INSERT INTO table VALUES (%s)", (var1,))
ログイン後にコピー

利点:

プレースホルダーとタプルを使用すると、いくつかの利点があります。 :

  • 適切なエスケープとクォーティング: データベース API は変数のエスケープとクォートを正しく処理し、SQL インジェクションやその他の脆弱性からデータを確実に保護します。
  • 文字列フォーマットの回避: 文字列に依存します。書式演算子 (%) は、セキュリティ リスクや制御されていない文字列書式設定攻撃につながる可能性があります。

以上がPython 内の SQL クエリで変数を安全に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート