8

在生产阶段,我很可能会研究迁移功能(带有版本等),但是当我处于开发阶段时,我想知道在我的 models.py 中处理任何更改的最常见方法是什么?该应用程序是使用 SQLAlchemy 设置的。

我对 python web 框架比较陌生。我的背景是 PHP,最近我使用 Symfony 1.4 完成了一个项目,我通常可以在该项目中完成symfony doctrine:build --all --and-load重建模型类、重建数据库和加载数据夹具等工作。

目前我正在做的只是删除数据库,重新创建它,并使用负责重新创建表等的 paste 提供应用程序。

这可能是一个菜鸟问题,但你去吧。

4

2 回答 2

4

我现在正在使用 sql alchemy migrate,这很容易。

这是一个教程: http ://spyced.blogspot.com/2008/07/sqlalchemy-migrate-for-dummies.html

以及包含更多信息和教程的 pdf: http ://www.google.com/url?sa=t&source=web&cd=5&sqi=2&ved=0CC4QFjAE&url=http%3A%2F%2Fsqlalchemy-migrate.googlecode.com%2Ffiles%2Fsqlalchemy -migrate-0.5.1.3-docs.pdf&rct=j&q=sqlalchemy%20migrate&ei=QgCUTYGGEcPPiALH65SdCQ&usg=AFQjCNHG-1IdCiIPSslwK_hTMiCzrYVvoA&sig2=b_5-I3D-nebSVR_7FccRvQ&cad=rja

它很容易安装,以一种表达性的 sqlalchemy 方式对数据库进行更改(升级降级)。

于 2011-03-31T04:19:05.273 回答
2

好吧没关系。我像这样修改了我的initialize_sql:

def initialize_sql(engine):
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine
    Base.metadata.drop_all(engine) #added this
    Base.metadata.create_all(engine)
    try:
        populate()
    except IntegrityError:
        pass

值得庆幸的是,这只删除了表,而不是整个数据库,所以它运行得很快。

于 2011-03-31T01:44:20.073 回答