google-colaboratory - 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 笔记本上运行良好
解决方案
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
推荐阅读
- vaadin - 鼠标滚轮上的 Vaadin 水平滚动
- arrays - 如何使 typedef'd 函数指针 extern
- python - 如何使用线程来加速我的功能?
- java - spring boot AbstractJPAConfiguration 未找到
- c# - Shell CurrentItem 使标签栏消失
- android - 当该函数需要在android中返回一个值时如何在线程中调用Room数据库函数
- angular - 角度路线:使用多个参数时的redirectTo
- node.js - Socket.io 或 Rest API
- json - .Net:通过反序列化创建动态 JSON
- java - 从 jsp 调用 servlet 方法