第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可變表名。

可變表名。

慕后森 2019-07-05 15:27:33
可變表名。問:不需要使用字符串構造函數(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個贊

對于那些尋找將表作為變量的方法的人,我從對同一個問題的另一個回答中得到了這個結果。這里:

它說了下面的話,它起作用了。所有這些都是引用自馬霍克:

不能使用參數(shù)替換表名。您需要自己將表名添加到查詢字符串中。就像這樣:

query = 'SELECT * FROM {}'.format(table)c.execute(query)

需要注意的一件事是表名的值的來源。如果這來自不受信任的源(例如用戶),則需要驗證表名以避免潛在的SQL注入攻擊。一種方法可能是構造一個參數(shù)化查詢,從DB目錄中查找表名:

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


查看完整回答
反對 回復 2019-07-05
  • 3 回答
  • 0 關注
  • 493 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號