SuperAPI AI 工具集

sqlite

数据与分析

查看项目

更新于 10-15 17:29

技能介绍

用途:在服务端进程中扩展 SQLite,让自定义逻辑在查询引擎内与索引、WHERE、GROUP BY、窗口帧协同工作。主要分两种方式。应用自定义函数:按连接注册 Python 可调用对象,无需编译;支持标量(每行一次,单值,用于转换、解析、哈希)、聚合(step 每行、finalize 一次,用于加权平均等自定义汇总)、窗口(Python 3.11+,需 step、inverse、value、finalize,用于运行中位数、移动平均)。纯函数应设 deterministic=True,以支持表达式索引、生成列、部分索引与优化;读取时钟、随机、依赖外部状态的函数不可标记。需正确处理 NULL 与 SQLite 动态类型。可加载扩展:加载编译好的 C 共享库(.so/.dll/.dylib),如 spatialite、sqlite-vec。Python 中先 conn.enable_load_extension(True),再 conn.load_extension('./spatialite'),可省略扩展名,完成后建议关闭。注意该开关仅启用 C API,不启用 SQL load_extension() 函数,以防注入。编写扩展需包含 sqlite3ext.h,入口点命名为 sqlite3_<文件名>_init,可注册函数、排序规则、虚拟表、VFS,用 sqlite3_auto_extension 与 SQLITE_OK_LOAD_PERMANENTLY 实现持久注册;静态链接加 -DSQLITE_CORE。适用场景:SQL 中的自定义转换、领域评分、自定义聚合、加载第三方扩展、构建可复用插件。不适合:全文检索用内置 FTS5,向量相似度用 sqlite-vec,PostgreSQL/MySQL 应使用原生 UDF 或存储过程。