LINUX.ORG.RU

Python и миграции БД

 , ,


1

1

Какие есть альтернативы Alembic для организации миграции схемы БД в веб-приложениях на Python?

Я хочу миграции в виде SQL-скриптов (с опциональной возможностью иногда вызывать Python-код для сложных ситуаций), а не попыток писать недо-SQL на Python. Мне также не нужны миграции в обратную (down) сторону, только вперёд (эта функция может быть в библиотеке, но не надо заставлять меня писать пустые миграции в обратную сторону, когда я не хочу). Зато нужна поддержка PostgreSQL. Ещё было бы классно, если бы библиотека миграции поддерживала asyncio. Да, для самой миграции асинхронность ничего не даёт, но это позволяет не держать в зависимостях две реализации драйвера БД - асинхронный и синхронный.

Аналог из мира Java - Flyway.

★★★★★

Последнее исправление: KivApple (всего исправлений: 2)

alembic это разве не sqlalchemy? разве он работает на голом sql без алхимии? в любом случае, если тебе нужен голый sql, пиши миграции на голом sql, в чём проблема.

eternal_sorrow ★★★★★
()

иногда вызывать Python-код для сложных ситуаций

И часто оно надо? В некоторых случаях в миграции можно обойтись и plpgsql. Но если готовить данные для справочных таблиц путем конверсии откуда-то, то да, какой-то язык неплохо бы.

миграции в обратную сторону

Они не всегда возможны, так как не все миграции в принципе обратимы. Обратные миграции в целом достаточно тупая идея.

Аналог из мира Java - Flyway.
в веб-приложениях на Python?

Почему инструмент миграций БД обязательно должен быть на том же языке, что и веб-приложение? Глупое ограничение какое-то.

mike77
()
Ответ на: комментарий от theNamelessOne

Мне хочется, чтобы все зависимости моего проекта ставились одной командой pip -r requirements.txt в venv, так что утилиты и библиотеки, которые не ставятся через pip сразу мимо.

KivApple ★★★★★
() автор топика

для SQL миграций на Postgre, мне кажется самое простое будет pgadmin4 «Schema Diff»

uralbash
()
Ответ на: комментарий от HerrWeigel

Кажется, это то, что мне нужно. Спасибо.

KivApple ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.