5

我有一个标准运行的磨房 Pylons Pyramid 应用程序,它使用 SQLAlchemy 进行数据库持久性。

我已经建立了一个 SQLAlchemy-migrate 存储库并让它运行,但我真的希望能够使用 paste 来升级和降级数据库,或者至少以某种方式让用户(在安装 egg 之后)升级/降级数据库到所需的版本。

我现在已经将它内置到我的应用程序中,所以在应用程序启动时它会进行版本升级,但我宁愿使用用户明确必须升级数据库的东西,以便他们确切知道发生了什么,并且知道提前做好备份。

我该怎么做呢?如何添加要粘贴的命令?

用户设置应用程序的方式是:

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

第一次设置它,进行数据库升级或一般升级我想要:

paste upgrade-app production.ini#appname

或类似的规定。

4

2 回答 2

1

您可以创建自己的粘贴命令,例如upgrade-app,然后使用 . 从任何地方调用它paster --plugin=appname upgrade-app /path/to/production.ini appname。可以参考pyramid如何实现PShellCommand。

于 2011-06-02T09:38:37.827 回答
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

是通过 Fabric 接口提供的一组 db 特定命令。

于 2011-05-23T10:33:00.107 回答