可變表名。問:不需要使用字符串構造函數(shù)就可以使用變量作為表名嗎?信息:我現(xiàn)在正在做一個項目,這個項目記錄了我的模擬星圖中的數(shù)據(jù)。為此,我將把所有數(shù)據(jù)加載到sqite數(shù)據(jù)庫中。它運行得很好,但是我決定給我的數(shù)據(jù)庫增加更多的靈活性、效率和可用性。我計劃稍后在模擬中加入行星,并希望為每一顆恒星提供一張桌子。這樣的話,我就不用去查詢每一個太陽系中有2000萬個行星的表了。有人告訴我,使用字符串構造函數(shù)是不好的,因為它使我容易受到SQL注入攻擊。雖然這不是什么大問題,因為我是唯一能夠訪問這些DBS的人,我想遵循最佳實踐。也是這樣,如果我做一個類似的項目,它是向公眾開放的,我知道該做什么。目前我正在做這件事:cursor.execute("CREATE TABLE StarFrame"+self.name+" (etc etc)")這是可行的,但我想做的更像:cursor.execute("CREATE TABLE StarFrame(?) (etc etc)",self.name)雖然我知道這可能是不可能的。雖然我會滿足于cursor.execute("CREATE TABLE (?) (etc etc)",self.name)如果這是不可能的,我會接受這個答案,但如果有人知道如何做到這一點,請告訴。*)我在用python編碼。
3 回答

肥皂起泡泡
TA貢獻1829條經(jīng)驗 獲得超6個贊
query = 'SELECT * FROM {}'.format(table)c.execute(query)
import sqlite3def exists_table(db, name): query = "SELECT 1 FROM sqlite_master WHERE type='table' and name = ?" return db.execute(query, (name,)).fetchone() is not None
添加回答
舉報
0/150
提交
取消