SQLITE3语法错误在已测试的SQL脚本上



我正在使用python 3.6.4和sqlite3 2.6.0在我的表中查询最接近的连续日期。

我尝试将实际的SQL字符串带有VSCODE调试器,并使用DB浏览器进行SQLITE测试。它正如我期望的。

这是代码:

sql =  'WITH 
            dates(cast_date) AS (
                SELECT DISTINCT play_date
                FROM TimeTable
            ),
            groups AS (
                SELECT
                    date(cast_date, '-'||(ROW_NUMBER() OVER (ORDER BY cast_date))||' days') AS grp,
                    cast_date
                FROM dates
            )
        SELECT
            MIN(cast_date) AS date_start,
            MAX(cast_date) AS date_end
        FROM groups GROUP BY grp ORDER BY 2 DESC LIMIT 1'
cursor = conn.cursor() 
result = []
try:
    cursor.execute(sql)
    result = cursor.fetchone()
except sqlite3.OperationalError:
    FileLogger.exception('Exception at '+__file__+' '+__name__)

发生一个例外:

cursor.execute(sql)
sqlite3.OperationalError: near "OVER": syntax error

窗口函数首先将支持添加到SQLite中,并使用Release版本3.25.0(2018-09-15(添加到SQLite。

使用Python时,您正在使用Python SQLite3客户端库(与Python一起分发(,而不是System SQLite3安装。对于Python 2.7,该版本为3.11.0,低于您所需的版本。

您可以尝试使用这些答案所建议的较新的sqlite3客户库库。

最新更新