💬 观点Simon Willison
sqlite-utils 4.0, now with database schema migrations — Simon Willison 发布 sqlite
Simon Willison 发布 sqlite-utils 4.0,核心新特性是数据库迁移系统,简化 SQLite 项目 schema 演进。
2026-07-07原文
本文为要点摘要,完整细节以原文为准。
🧭 一图看懂
由原文自动提炼 · 以原文为准点击任一分支,查看这一点的一句话解读
sqlite-utils 4.0 数据库迁移
用 Python 文件定义迁移序列,自动追踪并应用待执行迁移
- Migrations 类 + @migrations() 装饰器
- migrate data.db migrations.py 命令执行
- _sqlite_migrations 表记录已应用迁移
⚙️ 流程拆解
STEP 1编写 migrations.py
STEP 2定义 Migrations 实例
STEP 3用装饰器注册迁移函数
STEP 4运行 migrate 命令
STEP 5自动应用待执行迁移
🔗 涉及的概念与玩家
- sqlite-utils产品
- Simon Willison人物
- SQLite产品
- Django Migrations方法
- sqlite-migrate产品
- Claude Fable 5模型
- Andrew Godwin人物
- db.atomic()方法
- Simon Willison—发布→sqlite-utils
- sqlite-utils—基于→SQLite
- sqlite-utils—整合→sqlite-migrate
- Django Migrations—启发→sqlite-utils
- Andrew Godwin—开发→Django Migrations
- Claude Fable 5—协助设计→sqlite-utils
- 迁移系统基于 Python 文件定义变更序列,利用
table.transform()实现 SQLite 原生 ALTER TABLE 不支持的 schema 修改(如改列类型),通过创建临时表、复制数据、替换旧表实现。- 对开发者:提供了一种轻量、可编程的 schema 版本管理方案,尤其适合无 ORM 的 SQLite 项目。
- 新增
db.atomic()上下文管理器支持嵌套事务,利用 SQLite 保存点实现事务内事务,提升迁移安全性和可推理性。- 对工具链:使复杂数据库操作(如批量迁移)更可靠,降低数据损坏风险。
- 支持复合外键,包括创建、转换和通过
table.foreign_keys内省;该功能由 AI 代码助手协助设计 API。- 对开发者:填补了 sqlite-utils 在关系完整性方面的关键缺口,使库更适用于复杂数据模型。
原文:sqlite-utils 4.0, now with database schema migrations · 作者 Simon Willison
🕸 顺着图谱继续读
- sqlite-migrate 0.2 — SQLite迁移工具升级:兼容新版本并简化依赖。2026-07-07 · 共同涉及 sqlite-migrate、sqlite-utils、Simon Willison
- sqlite-utils 4.0rc1 adds migrations and nested — SQLite2026-06-21 · 共同涉及 sqlite-utils、Simon Willison、sqlite-migrate
- sqlite-utils 4.0rc4 — SQLite2026-07-07 · 共同涉及 sqlite-utils、SQLite、Simon Willison
- sqlite-utils 4.0rc3 — sqlite2026-07-06 · 共同涉及 sqlite-utils、SQLite、Simon Willison