0
創建SQLite視圖
我創建了一個數據庫,我能夠使用下面的命令來創建一個簡單的觀點:不能使用列名列表在Python
CREATE VIEW IF NOT EXISTS monthly_terminals (year, month) AS
SELECT reportYear, reportMonth FROM osMonthlyTerminals
此命令的工作就好了,如果我粘貼成在Firefox上的SQLite Manager插件:
然後我放棄這一觀點,並嘗試使用完全相同的命令,在下面的Python 3代碼來創建這個觀點......
import sqlite3
db_name = "../data/OsReportMerchants.sqlite"
conn = sqlite3.connect(db_name)
cur = conn.cursor()
cur.execute("CREATE VIEW IF NOT EXISTS monthly_terminals (year, month) AS SELECT reportYear, reportMonth FROM osMonthlyTerminals")
...但我得到以下錯誤:
sqlite3.OperationalError: near "(": syntax error
更具體地說,它看起來像這樣在IPython中:
是的,我知道我應該被參數化這我曾試圖這樣做,但仍繼續陷入同樣的困境。
我看這個:https://www.sqlite.org/lang_createview.html它說列名單在3.9及更高版本中被支持,所以我更新到版本3.13的sqlite3,並且仍然遇到這個問題。
當我刪除列的列表,並使用此:
import sqlite3
db_name = "../data/OsReportMerchants.sqlite"
conn = sqlite3.connect(db_name)
cur = conn.cursor()
cur.execute("CREATE VIEW IF NOT EXISTS monthly_terminals AS SELECT reportYear, reportMonth FROM osMonthlyTerminals")
它工作正常。不知道爲什麼它在一種情況下,而不是在另一種情況下。
當我做conda列表時,它顯示sqlite 3.13.0。當我從python shell執行sqlite3.version(在導入sqlite3之後)時,它說2.6.0。這似乎讓我感到困惑(也許是因爲我對Python比較陌生)。所以看起來FireFox插件使用的是更新版本,我的Python代碼使用的是舊版本。這是怎麼回事? –
看到我答案的第一句話。 –