Обновление веб-приложений Pyramid/SQLAlchemy
-
09-09-2020 - |
Вопрос
У меня есть стандартное приложение Pylons Pyramid, которое использует SQLAlchemy для сохранения базы данных.
Я настроил репозиторий SQLAlchemy-migrate, и он работает, но я действительно хочу иметь возможность использовать Paster для обновления и понижения версии базы данных или, по крайней мере, какой-то способ заставить пользователя (после установки яйца) обновить/понизить версию. базу данных до требуемой версии.
Теперь он встроен в мое приложение, поэтому при запуске приложения он обновляет версию, но я бы предпочел использовать что-то, где пользователь явно должен обновить базу данных, чтобы он точно знал, что происходит, и знал заранее сделать резервные копии.
Как бы я это сделал?Как добавить команды для вставки?
Пользователи могут настроить приложение следующим образом:
paste make-config appname production.ini
paste setup-app production.ini#appname
Чтобы настроить его в первый раз, выполнить обновление базы данных или обновление в целом, мне бы хотелось:
paste upgrade-app production.ini#appname
Или что-то вдоль этих линий.
Решение
Вы можете создать свою собственную команду вставки, например. upgrade-app
, а затем вызвать его из любого места с помощью paster --plugin=appname upgrade-app /path/to/production.ini appname
.Вы можете посмотреть, как пирамида реализует PShellCommand.
Другие советы
Это не совсем то, что вы ищете, но один из способов справиться с этим, это с Ткань Команды.Мое приложение OSS у меня есть команда из ткани, которую вы запускаете, что создает файл .ini для вашего приложения, а затем, после того, как вы настраиваете SQLALCHEMY.URL в нем, вы запускаете команду ткани, которые init's SA миграции SA и запускают обновление.С тех пор, чтобы обновить вас FAB DB_UPGRADE.
Приведен пример установки документов, которые у меня установить.
https://github.com/mitechie/bookie/blob/Master / Fabfile / database.py
- это набор команд DB, доступных через интерфейс ткани.