8

生産段階では、おそらく移行機能 (バージョンなど) を検討しますが、開発段階にある間、models.py の変更を処理する最も一般的な方法は何でしょうか? アプリは SQLAlchemy でセットアップされます。

私はPython Webフレームワークに比較的慣れていません。私のバックグラウンドは PHP で、ごく最近、Symfony 1.4 を使用してプロジェクトを終了しました。これは通常symfony doctrine:build --all --and-load、モデル クラスの再構築、データベースの再作成、データ フィクスチャのロードなどを処理するだけで済みます。

現在、私がやっていることは、データベースを削除して再作成し、テーブルなどの再作成を処理するpasterでアプリを提供することです。

これはおそらく初歩的な質問ですが、どうぞ。

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 に答える