ホームページ > データベース > mysql チュートリアル > pyodbc を使用して Python で SQL SELECT ステートメントを安全にパラメータ化する方法

pyodbc を使用して Python で SQL SELECT ステートメントを安全にパラメータ化する方法

DDD
リリース: 2025-01-03 12:58:38
オリジナル
714 人が閲覧しました

How to Safely Parameterize SQL SELECT Statements in Python with pyodbc?

pyodbc を使用した Python のパラメーター化された Select ステートメント

この質問では、ループ内のパラメーターとして変数を使用して SQL SELECT ステートメントを実行する方法について説明します。 「スループット」というテーブルについて。使用される特定のパラメーターは、行の "DeviceName" 属性によって異なります。

初期試行

最初に、ユーザーは次のコードを試行しましたが成功しませんでした:

for row in cursor.execute("SELECT * FROM Throughput WHERE DeviceName=%s", %(data['DeviceName'])):
ログイン後にコピー

また失敗した試み

for row in cursor.execute("SELECT * FROM Throughput WHERE(DeviceName), values(?)", (data['DeviceName']) ):
ログイン後にコピー

最終的な作業コード

最終的に、ユーザーは次のスニペットで問題を正常に解決しました:

query = "SELECT * FROM Throughput WHERE DeviceName = '%s'" % data['Device Name']
try:
    for row in cursor.execute(query):
ログイン後にコピー

パラメータ化されたステートメント

推奨されるアプローチはパラメータ化されたステートメントを使用することですステートメント:

cursor.execute("SELECT * FROM Throughput WHERE DeviceName = ?", data['DeviceName'])
ログイン後にコピー

このアプローチには、以前の試みに比べていくつかの利点があります。

  • SQL インジェクションからの保護
  • 一重引用符で where 句の値をエスケープする必要がない
  • SQL の準備は 1 回だけ行われるため、後続の実行のパフォーマンスが向上します

以上がpyodbc を使用して Python で SQL SELECT ステートメントを安全にパラメータ化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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