Alembi c, SQLAlchemy и несколько «приложений» внутри проекта - PullRequest
1 голос
/ 27 февраля 2020

Возвращаясь к SQLAlchemy из мира Django, я хотел бы разделить проект на несколько приложений, в которых модели и представления сгруппированы вместе в соответствии с их назначением.

Например, я пишу приложение для планирования, и мне бы хотелось, чтобы Users и Plans жили в отдельных приложениях внутри моего проекта. Я хочу убедиться, что если мне придется разделить этот проект на более мелкие, у меня будет наименьший объем работы, который можно выполнить.

Я также хотел бы иметь возможность создавать и запускать миграции с помощью одной команды соответственно, чтобы мне не приходилось реконфигурировать сборки CI каждый раз, когда я добавляю модель или «приложение».

Пока что я могу придумать в этом отношении

структура проекта:

my_planner
  +- users
  |  +- migrations
  |  |  +- versions
  |  |  |  +- 0000_initial.py
  |  |  +- __init__.py
  |  |  +- env.py
  |  |  +- script.py.mako
  |  +- __init__.py
  |  +- models.py
  +- plans (same structure as users)

alembi c .ini:

[alembic]
script_location = alembic/migrations # this doesn't seem to matter
version_locations = users/migrations/versions plans/migrations/options

[users]
script_location = users/migrations

[plans]
script_location = plans/migrations

А затем мне пришлось поместить файлы env.py в мои папки migrations и импортировать нужные модели быть включенным в автоматические c миграции.

Однако, когда я генерирую свои автоматические c миграции, я должен указать точные «приложения», для которых я их генерирую, и указать ветвь.

PYTHONPATH=. alembic --name users revision -m 'initial'  --rev-id='0000' --branch-label users --autogenerate

И когда я применяю миграции, я должен применять их отдельно для каждой из ветвей.

Есть ли способ сделать эти вещи в одной команде, соответственно, без написания собственных сценариев? Или есть другой подход к управлению миграцией?

...