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

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

DDD
DDDオリジナル
2025-01-03 12:58:38711ブラウズ

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 までご連絡ください。