经测试的SQL脚本上的SQLite3语法错误

时间:2019-07-29 11:49:31

标签: python sql sqlite

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

我尝试使用vscode调试器获取实际的sql字符串,并使用DB Browser for 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

1 个答案:

答案 0 :(得分:0)

根据官方文档,

窗口功能支持的发布版本为3.25.0(2018-09-15),first added to SQLite

使用Python时,您使用的是Python SQLite3客户端库(随Python一起分发),而不是系统SQLite3安装。对于Python 2.7,版本为3.11.0,低于您所需的版本。

您可以尝试使用更新的SQLite3客户端库,例如suggested by these answers