You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite查询在DBeaver正常但Python中报语法错误原因排查

问题根因

你遇到的语法错误是SQLite版本对窗口函数的支持差异导致的:

  • SQLite 从 3.25.0 版本才正式支持窗口函数(即你查询里用到的 row_number() OVER (...) 语法)
  • 你出错的Ubuntu环境是SQLite v3.22.0,版本低于3.25.0,无法识别OVER关键字后的括号结构,就会抛出near "(": syntax error的报错
  • 正常运行的DBeaver环境是v3.36.0,远高于最低支持版本,所以能正常执行
  • 你之前认为次版本不会引入破坏性变更的判断是正确的:窗口函数属于新增功能,不属于破坏性变更,只是旧版本不支持新语法而已。
可选修复方案
  • 升级Ubuntu环境的SQLite版本到3.25.0及以上
  • 改写查询逻辑,把窗口函数实现的分组排序逻辑替换为旧版本兼容的写法:比如用关联子查询、临时表加分组统计的方式实现同等的row_number()效果
  • Python环境下可以安装pysqlite3第三方包,替换系统内置的旧版本sqlite3,无需升级系统SQLite即可使用新版本特性

内容的提问来源于stack exchange,提问作者Nik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:27:01