[英]In python, can we set table name as a variable using Sqlite3?
例如:
import Sqlite3
def ChangeTable(c,a):
c.execute('''DELETE FROM MY_TABLE WHERE id = ?''',(a,))
這樣,我可以更改 a 的值並使用 python 中的 function 處理數據庫。 但是我怎樣才能對表名做類似的事情呢? 這樣我可以使用一個 function 來處理不同的表。
您不能將變量用於表名。 您必須執行字符串連接或替換。 例如,使用 F 字符串(Python >= 3.6):
def change_table(table_name, id):
c.execute(f'DELETE FROM {table_name} WHERE id = ?', (id,))
具有更有意義的變量名...這里不需要三引號,但對多行語句很有用。
對表名的解析不是有意的,因為在 SQL 查詢中動態使用表名通常是一個壞主意。 如果您最終動態地想要使用表名做一些事情,那么您應該考慮重新設計您的數據庫並使其成為關系型數據庫。 很難就您的情況給出具體的建議,因為我們不知道您的數據庫是如何安排的。
另一個答案涉及在 SQL 查詢中使用字符串格式。 這是非常糟糕的編碼實踐,因為它使您的代碼容易受到SQL injection的攻擊。 事實上, sqlite文檔說永遠不要這樣做。 您不想手頭有Bobby Tables的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.