2008-08-21 6 views
10

現在、PHPベースのWebアプリケーションや現在PHPで書かれているいくつかのアプリケーションのポート用のPythonフレームワークDjangoを探しています。私の最後の年の間のより厄介な問題の1つは、データベーススキーマの変更を追跡し、これらの変更を生産システムに配備することでした。私はそれらを元に戻すことができることを敢えて願っていませんが、テストとデバッグのためにはもちろん素晴らしい機能です。ここの他の質問(this onethis oneなど)から、私は私だけではないことがわかりました。これは簡単な問題ではありません。また、そこには多くのインスピレーションがありました。バージョントラック、djangoでDBスキーマの変更を自動化

今、Djangoは非常に強力であるようですが、上記の助けになるツールはありますか?たぶんそれは彼らのドキュメントにあって、私はそれを逃した?

答えて

12

DBスキーマの移行を処理するサードパーティのユーティリティが少なくとも2つあります(SouthおよびDjango Evolution)。私はいずれかを試していないが、進化はもう少し長い間されているが、私は南についていくつかの良いことを聞いた。

また、Django wikiのSchemaEvolutionをご覧ください。これはdbの移行についてのwikiページです。

+0

南はDjango Evolutionで遊んだ後、最良の日付と思われます。私はSouthのデータ移行がキラー機能だと思います。私はDjango Evolutionにまだデータ移行がないと思います。唯一のスキーマの啓発 – Rasiel

2

前回は、私は、syncdbの実行は、あなたのmodels.pyファイルを使用してDBスキーマを同期するようにテーブルを追加することができます(バージョン0.97)をチェック、それはできません:

  • 名前の変更や人口に列を追加DB。あなたは手でそれをする必要があります。
  • モデルをリファクタリングして(テーブルを2つに分割するなど)、それに従ってDBを再作成します。

これは、2つの異なるmanagersで遊んで移行を行うためにDjangoのスクリプトを記述するかの可能かもしれないが、あなたのDBが大きい場合には、年齢がかかる場合があります。

0

さらに、dmigrationsもあります。 announcementから:

ジャンゴ - 進化はまだデータベーススキーマに反映されていないモデルへの変更を検出し、同期に2つのバックを持って来るために何をすべきかを考え出すことで、この問題に賢い方法に対処しようとします。 dmigrationsとは対照的に、dmigrationsは、一連の移行における変更を明示的に指定する必要があります。移行は、データベースを基になるモデルを反映する最新の状態に順番に適用します。

これは、マイグレーションを作成する開発者のための余分な作業を意味しますが、プロセス全体が完全に透明になります。プロジェクトにとっては、最も単純なシステムで作業することに決めました。

(マイ太字)

0

私は良い程度Django Schema Evolution Branchをたくさん聞いて、それらは、実際のユーザーのopionsました。ほとんどの場合、箱から出して何をすべきかを実行します。

0

Uは、Dmigrationsを検索する必要があります。これは、django-eveoltionsとは少し異なります。 それはあなたがしているすべてのことを示しています。それは素晴らしいはずです。

1

最近のDjangoConでのDBスキーマの変更に関するパネルセッションがありました。 video of the session(Googleに感謝)があり、これらのユーティリティのいくつかの有用な情報を提供するはずです。

+0

素敵なセッション。私はジャンゴの進化に固執することで私の心を作り上げたと思います。 – Farinha

関連する問題