首頁 > 資料庫 > mysql教程 > 如何透過 Python 的 `cursor.execute()` 函數在 SQL 查詢中安全地使用變數?

如何透過 Python 的 `cursor.execute()` 函數在 SQL 查詢中安全地使用變數?

Linda Hamilton
發布: 2025-01-12 08:20:43
原創
202 人瀏覽過

How Can I Safely Use Variables in SQL Queries with Python's `cursor.execute()` Function?

Python中使用變數進行參數化SQL查詢

在Python中,參數化SQL查詢對於防止SQL注入至關重要。雖然建議的方法是將變數直接傳遞給execute函數,但在某些情況下,使用變數來表示查詢本身也是可取的。

將查詢當作變數:語法錯誤

嘗試直接從變數執行SQL查詢(如下圖)會導致語法錯誤:

<code>sql = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3
cursor.execute(sql)</code>
登入後複製

Execute函數

cursor.execute函數的簽章規定它最多接受三個參數:

<code>cursor.execute(self, query, args=None)</code>
登入後複製

因此,將包含查詢和參數的變數作為單一參數傳遞是不正確的。

為了解決這個問題,有兩種可能的解決方案:

使用參數展開的元組:

<code>sql_and_params = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3
cursor.execute(*sql_and_params)</code>
登入後複製

但是,如果元組元素超過三個,這種方法可能會導致錯誤。

分離查詢與參數:

或者,可以將查詢和參數分開:

<code>sql = "INSERT INTO table VALUES (%s, %s, %s)"
args = var1, var2, var3
cursor.execute(sql, args)</code>
登入後複製

這種方法比較冗長,但可以確保將正確數量的參數傳遞給execute函數。

以上是如何透過 Python 的 `cursor.execute()` 函數在 SQL 查詢中安全地使用變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板