Declarative migrations via Python decorators with automatic transaction tracking replace manual ALTER TABLE workarounds and sqlite-migrate dependency.
Summary
Eliminates brittle schema evolution patterns in SQLite projects; db.atomic() context manager makes migrations safer by default and supports savepoint-based nesting. Integrates migration tracking directly into sqlite-utils, consolidating tooling for the Datasette/LLM ecosystem.
Why it matters
Eliminates brittle schema evolution patterns in SQLite projects; db.atomic() context manager makes migrations safer by default and supports savepoint-based nesting. Integrates migration tracking directly into sqlite-utils, consolidating tooling for the Datasette/LLM ecosystem.
Implementation verdict
Ready now. Replaces sqlite-migrate (which is now a compatibility shim) and manual migration scripts. Requires Python-based schema definitions via @migrations() decorators; no ORM model generation like Django. Start with uvx sqlite-utils migrate data.db migrations.py; existing sqlite-migrate code continues to work without changes. The db.atomic() context manager is immediately useful for any transaction-heavy workload.
Sources
Dev Signal
Get briefs like this in your inbox — free, every weekday.
100+ sources compressed into one 4-minute read. Ranked, cited, implementation-ready.