4

概要

私はdjangoでウェブサイトを構築しています。人々がフラットページの追加を開始できるようにし、管理者でいくつかの設定を行う必要があります。この情報はクライアントから提供されるため、これらの変更は決定的なものでなければなりません。ただし、バックエンドも開発しているため、テーブルの作成と移行を行っています。これらの変更をハブにプッシュします。

ツール

ジャンゴ

ギット

ポストグル

問題

オンライン サイトから自分のラップトップにデータベースの変更を確実に送信するにはどうすればよいですか? また、必要な調整を最小限に抑えるために、データベースの変更を実際のサイトにプッシュするにはどうすればよいでしょうか? 私は git フックに精通しているので、そのオプションが有効です。

補遺:

管理者から変更できるテーブルを知っていると思います。実際には多くのオーバーラップがあってはなりません。さらに考えてみると、危険なのは、彼らが行ったことを上書きするデータを私がプッシュすることです。

ありがとう。

4

3 に答える 3

2

スキーマの変更をサーバーに反映させるには、Southを慎重に使用してください。データが含まれている可能性のあるテーブルを変更する場合は、データの意味を維持するために、スキーマの移行と必要に応じてデータの移行の両方を記述してください。

更新されたデータを元に戻すために(これは重要ではないようですが、開発中に最新のテストデータを処理するのが良いかもしれません)、私は通常、Djangoフィクスチャとdumpdataおよびloaddataコマンドを使用します。フィクスチャをダンプしてリポジトリにコミットし、次にロードデータをエンドにコミットするのは簡単です。

gitフックを使用してこれの一部を自動化することもできますが、自動化が必要な場合は、代わりにFabricのようなものを試すことをお勧めします。このようなものの多くは、プッシュ/プルするたびに実行する必要はありません(特に、私は通常、新しいデータフィクスチャを頻繁にダンプしたくありません)。

于 2009-10-30T02:55:37.007 に答える
2

あなたはおそらく南を見てみるべきです:

http://south.aeracode.org/

ある種の継続的インテグレーション システムを実行している場合、South をトリガーする git フックをおそらく作成できるように思えます。

そうしないと、プッシュを行うたびに、自分で手動で移行手順を実行する必要があります。「サイトはメンテナンス中です」というメッセージを表示することを忘れないでください。;)

于 2009-10-29T19:43:42.093 に答える
0

mk-table-syncを使用して、ライブ サーバーからラップトップに変更をプルすることをお勧めします。mk-table-sync は多くのパラメーターを使用するため、fabricを使用してこのプロセスを自動化できます。基本的に、サーバーからプルする各タブレットで mk-table-sync を実行するファブリック関数を作成します。

これは、プルによって上書きされるため、データベースの変更を自分で行うことができないことを意味します。

ライブ データベースに加える唯一の変更は、South を使用することです。コードをサーバーにプッシュしてから、migrateを実行してデータベース スキーマを更新します。

于 2009-10-29T19:53:14.960 に答える