Вопрос

У меня есть стандартное приложение 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.

http://bmark.us/install.html

Приведен пример установки документов, которые у меня установить.

https://github.com/mitechie/bookie/blob/Master / Fabfile / database.py

- это набор команд DB, доступных через интерфейс ткани.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top