# 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.