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代码使用的是旧版本。这是怎么回事? –
看到我答案的第一句话。 –