升级Pyramid/SQLAlchemy网络应用

5 投票
2 回答
913 浏览
提问于 2025-04-16 18:09

我有一个普通的Pylons Pyramid应用程序,它使用SQLAlchemy来管理数据库。

我已经设置了一个SQLAlchemy-migrate的仓库,并且它可以正常工作,但我希望能够使用paster来升级和降级数据库,或者至少让用户在安装完软件包后,能够升级或降级数据库到所需的版本。

现在我已经把这个功能集成到我的应用里了,所以每次启动应用时,它会自动进行版本升级。不过,我更希望用户能够明确地去升级数据库,这样他们就知道发生了什么,并且知道要提前备份。

我该怎么做呢?我如何才能在paster中添加命令?

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

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

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

paste upgrade-app production.ini#appname

或者类似这样的东西。

2 个回答

0

这可能不是你想要的,但我处理这个问题的一种方法是使用Fabric命令。在我的开源应用程序中,我有一个Fabric命令,你运行它会为你的应用创建一个.ini文件,然后在你调整里面的sqlalchemy.url之后,再运行一个Fabric命令来初始化SA迁移并执行升级。从那以后,要进行升级,你只需运行fab db_upgrade。

http://bmark.us/install.html

是我设置的安装文档的一个例子。

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

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

1

你可以创建自己的粘贴命令,比如叫做 upgrade-app,然后在任何地方都可以用 paster --plugin=appname upgrade-app /path/to/production.ini appname 来调用它。你可以看看 pyramid 是怎么实现 PShellCommand 的。

撰写回答