2010-03-01 37 views
6

我需要在python中執行一個SQL查詢,它在sqlite3中添加一個新列。ALTER TABLE sqlite:如何檢查列是否存在之前改變表?

問題是有時它已經存在。所以在執行查詢之前,我需要檢查列是否已經存在。

如果是這樣,那麼我不會執行查詢。

有沒有辦法在sqlite做到這一點?還是必須通過python代碼中的try-catch塊來完成它?

非常感謝!

回答

12

您可以通過下面的語句得到的列清單的表:在編譯命令

PRAGMA table_info('table_name'); 

更多細節availabel在the sqlite web site

+0

+1一個乾淨和簡單的答案 – 2011-08-24 14:38:43

+0

這個問題被標記爲'python',但這並不告訴你如何在Python中做到這一點 – user5359531 2018-02-28 22:15:43

11

IMO這個

conn = sqlite3.connect(':memory:') 
c = conn.cursor() 
try: 
    c.execute('ALTER TABLE mytable ADD COLUMN newcolumn;') 
except: 
    pass # handle the error 
c.close() 

是比構造特例查詢更好的選擇。

你可以將上面的代碼包裝在一個AddColumn(遊標,表格,列)函數中,這樣你就可以重用它,再加上它會使代碼更具可讀性。

相關問題