首頁 > 資料庫 > mysql教程 > 我可以在 Python 中執行儲存在變數中的參數化 SQL 查詢嗎?

我可以在 Python 中執行儲存在變數中的參數化 SQL 查詢嗎?

Susan Sarandon
發布: 2025-01-12 08:32:42
原創
573 人瀏覽過

Can I Execute Parameterized SQL Queries Stored in a Variable in Python?

在 Python 中從變數執行參數化 SQL 查詢

為了防止 SQL 注入,在 Python 中執行參數化 SQL 查詢時,通常建議使用以下格式:

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

但是,關於是否可以將查詢儲存在變數中稍後執行的問題,值得探討。

execute() 方法簽章

要理解為什麼這可能無法工作,我們需要檢查 execute() 方法的簽名:

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

此方法最多需要三個參數:一個查詢和一個可選的參數序列或映射。

嘗試從變數執行查詢

如果我們嘗試執行儲存在變數 sql 中的查詢,例如:

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"
cursor.execute(sql)</code>
登入後複製

我們將收到錯誤,因為 sql 包含四個參數,包括變數本身。

分離查詢與參數

要從變數執行查詢,我們可以分離查詢和參數:

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

在這種情況下,sql 包含查詢,args 包含參數。透過指定 execute(sql, args),我們可以成功執行參數化查詢。

另一種方法

或者,我們可以使用更直觀的雙變量方法:

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

這種方法消除了為查詢和參數建立單獨變數的需要。

以上是我可以在 Python 中執行儲存在變數中的參數化 SQL 查詢嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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