# Databases : Migrations
## Python
[**raw-sql-migrate**](https://pypi.org/project/raw-sql-migrate/)
- https://github.com/ts-taiye/raw-sql-migrate/
- ancient, abandoned — but simple and possibly useful as an example
[**yoyo-migrations**](https://pypi.org/project/yoyo-migrations/)
- https://ollycope.com/software/yoyo/latest/
- active and featureful
#### Specifically Using `asyncpg`
[**asyncpg-migrate**](https://pypi.org/project/asyncpg-migrate/)
- https://github.com/kornicameister/asyncpg-migrate/
- inactive for 2yrs; no docs
[**asyncpg-trek**](https://pypi.org/project/asyncpg-trek/)
- https://github.com/adriangb/asyncpg-trek/
- active but tiny, super-simple
- insufficient docs :(
[**pogo-migrate**](https://pypi.org/project/pogo-migrate/)
- https://github.com/NRWLDev/pogo-migrate/
- https://nrwldev.github.io/pogo-migrate/
- active; SQL or Python migrations w/CLI
- inspired by yoyo and dbmate; created because yoyo doesn't support asyncpg
## Tools
**dbmate**
- https://github.com/amacneil/dbmate/
- active, Go, DB-agnostic
**goose**
- https://github.com/pressly/goose/
- http://pressly.github.io/goose/
- very active, Go
**migrate**
- https://github.com/golang-migrate/migrate/
- active, Go, DB-agnostic, source-agnostic, complex
[**sqitch**](https://sqitch.org/)
**sql-migrate**
- https://github.com/rubenv/sql-migrate/
- Go, DB-agnostic, based on Goose
**tern**
- https://github.com/jackc/tern/
- "Tern is great if you only need PostgreSQL. It also locks the database so multiple instances cannot interfere and supports transactions." -- redditor
## Commercial
**Flyway**
- https://red-gate.com/products/flyway/community/
- https://red-gate.com/hub/university/courses/flyway/getting-started-with-flyway
---
> [!NOTE] Declarative Tools
> For Postgres, a few declarative solutions include sqldef, Migra, Tusker (which builds on Migra), and Atlas.