首页 > 解决方案 > SQLite Window 函数未在 Google Colab Notebook 中运行

问题描述

当我尝试在 google colab 中运行以下代码时:

    #Get required Data
    data8 = pd.read_sql_query('''SELECT  Person.Name, Person.Gender
    FROM M_Cast left JOIN Person USING (PID)
    WHERE PID NOT IN
    (
    SELECT DISTINCT(PID) as PID
    FROM
        (
        SELECT *, LEAD(M_year, 1, 0) OVER (PARTITION BY Actor ORDER BY M_year ASC) AS N_Year
        FROM
            (
            SELECT trim(person.PID) as PID, trim(Person.Name) as Actor, substr(Movie.year,length(Movie.year)-3,4) as M_Year
            FROM Person
            LEFT JOIN M_Cast USING (PID)
            LEFT JOIN Movie USING (MID)
            )
        )
    WHERE (N_Year-M_Year)>3
    )''',con)

print('Output 8: Following is the list of actors never unemployed more than 3 years.(Included actors having single movie):\n')
data8

Colab 向我抛出一个错误 DatabaseError: Execution failed on sql : near "(": 语法错误

虽然它在我的 jupyter 笔记本上运行良好

标签: google-colaboratory

解决方案


Colab 中的默认 sqlite 版本是 3.22,但在 3.25+ 中支持窗口函数。所以你需要先升级它

!add-apt-repository -y ppa:sergey-dryabzhinsky/packages
!apt update
!apt install sqlite3

然后重新启动运行时,因为之前已经加载了 sqlite。

MENU > Runtime > Restart runtime

然后检查是不是新版本

import sqlite3
print(sqlite3.sqlite_version) # 3.33.0

推荐阅读