首頁 >資料庫 >mysql教程 >如何使用 pyodbc 在 Python 中安全地參數化 SQL SELECT 語句?

如何使用 pyodbc 在 Python 中安全地參數化 SQL SELECT 語句?

DDD
DDD原創
2025-01-03 12:58:38674瀏覽

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

Python 中使用pyodbc 的參數化Select 語句

本題討論如何在迴圈中使用變數作為參數來執行一個 SELECT 語句名 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 準備只發生一次,提高後續執行的效能

以上是如何使用 pyodbc 在 Python 中安全地參數化 SQL SELECT 語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn