我有以下Python程式碼:
cursor.execute("INSERT INTO table VALUES var1, var2, var3,")
其中 var1 是整數,var2 和 var3 是字串。
var1
var2
var3
如何在不使用 Python 的情況下編寫變數名稱(將其作為查詢文字的一部分)?
Python DB-API 的不同實作允許使用不同的佔位符,因此您需要找出您正在使用的佔位符 - 可能是(例如使用 MySQLdb):
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))
或(例如,使用 Python 標準函式庫中的 sqlite3):
cursor.execute("INSERT INTO table VALUES (?, ?, ?)", (var1, var2, var3))
或其他(在VALUES 之後,您可以有(:1, :2, :3) 或「命名樣式」 (:fee, : fie, :fo) 或(%(fee)s, %(fie)s, %(fo)s) ,其中您將字典而不是映射作為第二個參數傳遞給執行)。檢查您正在使用的DB API 模組中的paramstyle 字串常數,並在http://www.python.org/dev/peps/pep-0249/ 查看所有參數傳遞樣式是什麼!
VALUES
(:1, :2, :3)
(:fee, : fie, :fo)
(%(fee)s, %(fie)s, %(fo)s)
執行
paramstyle
請注意,參數以元組形式傳遞,(a, b, c)。如果您傳遞單一參數,則元組需要以逗號結尾,(a,)。
(a, b, c)
(a,)
資料庫 API 對變數進行正確的轉義和引用。注意不要使用字串格式化運算子(%),因為
%
Python DB-API 的不同實作允許使用不同的佔位符,因此您需要找出您正在使用的佔位符 - 可能是(例如使用 MySQLdb):
或(例如,使用 Python 標準函式庫中的 sqlite3):
或其他(在
VALUES
之後,您可以有(:1, :2, :3)
或「命名樣式」(:fee, : fie, :fo)
或(%(fee)s, %(fie)s, %(fo)s)
,其中您將字典而不是映射作為第二個參數傳遞給執行
)。檢查您正在使用的DB API 模組中的paramstyle
字串常數,並在http://www.python.org/dev/peps/pep-0249/ 查看所有參數傳遞樣式是什麼!請注意,參數以元組形式傳遞,
(a, b, c)
。如果您傳遞單一參數,則元組需要以逗號結尾,(a,)
。資料庫 API 對變數進行正確的轉義和引用。注意不要使用字串格式化運算子(
%
),因為