2011-05-23 82 views
5

我已经有了PyLons Pyramid应用程序的标准运行,该应用程序使用SQLAlchemy来实现其数据库持久性。升级金字塔/ SQLAlchemy网络应用程序

我已经设置了一个SQLAlchemy-migrate回购协议并使其正常工作,但是我确实希望能够使用paster升级和降级数据库,或者至少有一些方法让用户(在安装了蛋之后)将数据库升级/降级到所需的版本。

我已经将它内置到了我的应用程序中,所以在应用程序启动时它会进行版本升级,但我宁愿选择某些用户明确必须升级数据库的内容,以便他们知道到底会发生什么并且知道事先做好备份。

我该怎么办?我如何添加命令来粘贴?

用户将设置应用程序的方法是:

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

要设置它的第一次,做数据库升级或升级一般我会想:

paste upgrade-app production.ini#appname 

或者沿着这些线路。

+1

您可以创建自己的贴片命令,例如'upgrade-app',然后用'paster --plugin = appname upgrade-app /path/to/production.ini appname'从任何地方调用它。您可以参考金字塔如何实现PShellCommand。 – sayap 2011-05-23 11:16:18

+0

@sayap你介意给出一个答案,以便我可以接受它吗? – 2011-05-25 17:08:43

+0

完成。所以需要一个“这个快速和肮脏的评论对我来说足够好”功能:) – sayap 2011-06-02 09:39:47

回答

1

您可以创建自己的贴片命令,例如upgrade-app,然后用paster --plugin=appname upgrade-app /path/to/production.ini appname从任意位置调用它。您可以参考金字塔如何实现PShellCommand。

0

这不完全是你要找的,但我处理这个问题的一个方法是使用Fabric命令。我的OSS应用程序我有一个运行的结构命令,它会为您的应用程序创建一个.ini文件,然后在调整其中的sqlalchemy.url之后,运行结构命令以执行init的SA迁移并运行升级。从此,升级您的fab db_upgrade。

http://bmark.us/install.html

是安装文档我已经安装的一个例子。

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

是集通过光纤接口DB特定的命令。