Коробка с питоном
Yoyo
В текущих реалиях практически любой сервис использующий реляционную БД не может обойтись без миграций. Так уж сложилось, что в нашем питонячьем мире, в проектах почти всегда можно увидеть ORM (например SQLAlchemy) и пакет, который позволяет управлять миграциями, работающий с конкретной ORM (в случае с Алхимией это alembic).
Но иногда попадаются такие проекты, в которых нам не нужна ORM, по разным причинам. В этом случае, для миграций можно использовать yoyo.
Yoyo - это простой мигратор схем для нашей БД. Миграции здесь записываются в виде скриптов на SQL или на Python.
Сгенерировать папку для миграций и конфиг можно вот так:
yoyo init --database sqlite:///mydb.sqlite3 migrations
А теперь создадим миграцию:
yoyo new
Опишем SQL для применения миграции (apply) и для её отката (rollback):
from yoyo import step
__depends__ = {}
steps = [
step(
"CREATE TABLE TEST (a int);",
"DROP TABLE TEST"
)
]
Теперь можно применить миграцию командой yoyo apply и после откатить её командой yoyo rollback.
Внутри базы yoyo создает таблицу с логом всех операций (_yoyo_log), таблицу с применёнными миграциями (_yoyo_migration), а так же таблицу yoyo_lock, которая позволяет заблокировать миграции, которые будут идти с нескольких инстансов приложений.
Вот такая вот простая и удобная библиотека :)
Сайт | Sourcehut | PyPI
#библиотека
7 · 832 ·