簡體   English   中英

在 python 中,我們可以使用 Sqlite3 將表名設置為變量嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM