Pergunta

Eu tenho um aplicativo Pylons Pyramid padrão, que usa SQLAlchemy para persistência de banco de dados.

Eu configurei um repositório SQLAlchemy-migrate e o tenho funcionando, mas eu realmente quero ter a capacidade de usar o paster para atualizar e fazer downgrade do banco de dados, ou pelo menos alguma maneira de fazer com que o usuário (após instalar o ovo) atualize/downgrade o banco de dados para a versão necessária.

Eu o tenho integrado em meu aplicativo agora, então, na inicialização do aplicativo, ele faz a atualização da versão, mas prefiro ir com algo em que o usuário tenha que atualizar explicitamente o banco de dados para que saiba exatamente o que está acontecendo e saiba para fazer backups com antecedência.

Como eu faria isso?Como adiciono comandos para colar?

A forma como os usuários configurariam o aplicativo é:

paste make-config appname production.ini
paste setup-app production.ini#appname

Para configurá-lo pela primeira vez, para fazer a atualização do banco de dados ou atualização em geral eu gostaria:

paste upgrade-app production.ini#appname

Ou algo nesse sentido.

Foi útil?

Solução

Você pode criar seu próprio comando paster, por exemplo. upgrade-app, e, em seguida, ligue de qualquer lugar com paster --plugin=appname upgrade-app /path/to/production.ini appname.Você pode consultar como a pirâmide implementa o PShellCommand.

Outras dicas

Não é bem o que você está procurando, mas uma maneira de lidar com isso é com Tecido comandos.Meu aplicativo OSS, tenho um comando fabric que você executa que cria um arquivo .ini para seu aplicativo e, depois de ajustar o sqlalchemy.url nele, você executa um comando fabric que inicia as migrações SA e executa a atualização.A partir de então, para atualizar você executa fab db_upgrade.

http://bmark.us/install.html

é um exemplo dos documentos de instalação que configurei.

https://github.com/mitechie/Bookie/blob/master/fabfile/database.py

O conjunto de comandos específicos do banco de dados está disponível por meio da interface do Fabric.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top