Python3.12中SQLiteODBC调用CONCAT_WS()函数报错求助
解决sqlite3.OperationalError: unknown function: CONCAT_WS() 错误
问题原因
你遇到的错误核心是当前连接SQLite的引擎版本不支持CONCAT_WS()函数:
CONCAT_WS()是SQLite 3.33.0(2020-08-14)才引入的内置函数- Windows下Python的
sqlite3模块默认绑定的SQLite版本可能低于该版本;或者你使用的SQLite ODBC驱动版本过旧,未包含该函数支持 - Beekeeper Studio、DBeaver和WSL环境能正常运行,是因为它们使用的是独立的、版本更高的SQLite引擎,和Python/ODBC驱动绑定的版本不是一回事
解决方案
1. 检查并升级Python绑定的SQLite版本
先确认Python自带的SQLite版本:
import sqlite3 print(sqlite3.sqlite_version)
如果输出版本低于3.33.0:
- 直接升级Python到最新稳定版(Python 3.10+绑定的SQLite版本通常都≥3.33.0)
- 或者使用第三方库
pysqlite3绑定最新SQLite:
然后替换代码中的导入:pip install pysqlite3-binaryimport pysqlite3 as sqlite3
2. 更新SQLite ODBC驱动
如果是ODBC连接场景(比如PowerBI/Excel),需要下载并安装最新版本的SQLite ODBC驱动,确保驱动内置的SQLite版本≥3.33.0。
3. 替换CONCAT_WS()为兼容写法
如果暂时无法升级版本,可以用COALESCE和字符串拼接符||模拟CONCAT_WS()的功能(忽略NULL值,用指定分隔符连接),修改表定义中的虚拟列:
full_name TEXT GENERATED ALWAYS AS ( COALESCE(first_name || ' ', '') || COALESCE(middle_name || ' ', '') || last_name ) VIRTUAL,
这个写法在任何SQLite版本中都能运行,效果和CONCAT_WS(' ', first_name, middle_name, last_name)一致。
内容的提问来源于stack exchange,提问作者MPadilla
相关产品推荐
相关产品推荐

