alchemy-utils 0.1a0:AI 生成的数据库无关版 sqlite-utils,支持 PostgreSQL、SQLite 和 DuckDB
Simon Willison 发布 alchemy-utils 0.1a0,一个基于 SQLAlchemy、兼容 sqlite-utils 核心 API 的 Python 库,支持 PostgreSQL、SQLite 和 DuckDB。本文介绍其功能、使用方式,并分析对中文开发者的意义。
一句话看懂
alchemy-utils 0.1a0 是 Simon Willison 用 AI 生成的数据库无关版 sqlite-utils,基于 SQLAlchemy,支持 PostgreSQL、SQLite 和 DuckDB。
详细发生了什么
Simon Willison 一直想做一个数据库无关版的 sqlite-utils。今天早上,他让 Codex 和 GPT-5.6 Sol Ultra 构建了一个原型。他给出的提示词要求:研究构建一个与 sqlite-utils 核心 API 相同的库,特别是 insert、upsert、insert_all、upsert_all、create、update 方法以及表内省功能,但底层使用 SQLAlchemy 以支持多种数据库引擎;测试目标包括 PostgreSQL、SQLite 和 DuckDB;参考 ~/dev/sqlite-utils 的代码;使用 uv init 初始化项目,采用红绿 TDD 和 pytest 进行测试。
结果只用了很少的后续提示就完成了项目,并发布为 alpha 版本。Simon 展示了一个一行命令,用于列出本地 PostgreSQL 博客数据库表中的行:
uvx --with 'alchemy-utils[postgresql]' alchemy-utils rows 'postgresql+psycopg://simon@localhost:5432/simonwillisonblog' redirects_redirect
输出为 JSON 格式,包含 id、domain、path、target、created 等字段。
中文圈视角
这个项目对中文开发者有几点启示。首先,它展示了 AI 辅助编程的潜力:Simon 用自然语言描述需求,AI 生成了可用的库,这降低了开发门槛。国内开发者可以尝试类似工作流,用国产模型如 DeepSeek 或 Kimi 来辅助开发,效果可能也不错。
其次,alchemy-utils 提供了跨数据库的统一接口,对于需要同时使用 SQLite 和 PostgreSQL 的项目很有用。国内很多中小团队常用 SQLite 做原型,生产环境切换到 PostgreSQL,这个库可以平滑过渡。不过目前还是 alpha 版本,稳定性有待验证,建议在非生产环境试用。
另外,由于项目基于 SQLAlchemy,国内开发者可以方便地集成到现有 Flask 或 FastAPI 项目中。但注意,它目前不支持 MySQL,对于国内使用 MySQL 较多的场景可能不够友好,可以关注后续版本。
几条值得记住的细节
- alchemy-utils 0.1a0 是 alpha 版本,功能可能不稳定,API 可能变化。
- 支持 PostgreSQL、SQLite 和 DuckDB,通过 SQLAlchemy 实现多数据库兼容。
- 核心 API 与 sqlite-utils 类似,包括 insert、upsert、insert_all、upsert_all、create、update 和表内省。
- 安装方式:
uvx --with 'alchemy-utils[postgresql]' alchemy-utils ...,可针对不同数据库添加 extra。 - 项目使用 uv init 初始化,采用 TDD 和 pytest 测试,代码质量有保障。
一句话总结
alchemy-utils 让你用熟悉的 sqlite-utils 语法操作多种数据库,值得关注,但生产使用需谨慎。