將SQL查詢儲存在變數中可以提高程式碼的彈性和可讀性。本文探討如何利用變數在Python中有效執行參數化SQL查詢。
參數化SQL查詢透過將SQL語句與變數資料分開來防止SQL注入。在Python中,這是透過cursor.execute()
方法實現的,其中佔位符(%s)代表變數。
要將SQL查詢儲存在變數中,將其賦值給字串變量,例如:
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"</code>
要使用多個變數執行參數化查詢,請將變數作為序列或映射傳遞。但是,execute()
方法期望三個參數,而包含SQL查詢則超過此限制。
為了解決這個問題,可以將SQL查詢和變數拆分成單獨的變數和參數。一種方法是將變數賦值給元組的元素:
<code class="language-python">sql_and_params = ("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3)</code>
但是,由於參數數量的原因,此方法會引發錯誤。相反,在將其傳遞給execute()
時,應將元組拆分如下:
<code class="language-python">cursor.execute(sql_and_params[0], sql_and_params[1:])</code>
更易讀的方法是為SQL查詢及其參數使用單獨的變數:
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)" args = var1, var2, var3 cursor.execute(sql, args)</code>
此方法在SQL語句及其參數之間提供了清晰的分隔。
以上是如何在Python中使用變數有效執行參數化SQL查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!