应用于列的函数的CREATE INDEX:适用于一个安装,而不适用于另一个安装

时间:2018-04-18 14:51:57

标签: python sql indexing sqlite

在Windows上执行此操作时(sqlite3.version为2.6.0,sqlite3.sqlite_version为3.23.1):

import sqlite3, datetime
db = sqlite3.connect(':memory:', detect_types=sqlite3.PARSE_DECLTYPES)
c = db.cursor()
c.execute('CREATE TABLE mytable (id integer, date timestamp)')
c.execute('INSERT INTO mytable VALUES (1, ?)', (datetime.datetime(2018,1,1,12,11,29),))

c.execute('CREATE INDEX id1 ON mytable(JULIANDAY(date))')

它的工作原理(在JULIANDAY(date)而不是在date上设置INDEX的事实很有用,因为question+answer}。

在Linux上做同样的事情(sqlite3.version是2.6.0,sqlite3.sqlite_version是3.8.2)时,我得到:

sqlite3.OperationalError: near "(": syntax error

在此版本的JULIANDAY(date)上创建了一个INDEX吗?

1 个答案:

答案 0 :(得分:3)

根据the documentation,在SQLite 3.9.0中引入了在表达式上创建索引的能力 - 因此您将无法在Linux机器上安装的3.8.2版本中使用它。