djangoを使用してデータベースの変更をDVCS上で簡単に移動できるようにする方法

StackOverflow https://stackoverflow.com/questions/1646074

質問

概要

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

ツール

django

git

postgres

問題

データベースの変更をオンラインサイトからLappyで確実に取得する方法、およびデータベースの変更をライブサイトにプッシュして、最小限の調整が必要な方法?私はgitフックに精通しているため、そのオプションが有効です。

補遺:

管理者が変更できるテーブルを知っていると思います。それほど多くのオーバーラップはないはずです。さらに考えると、危険なのは、自分がしたことを上書きするデータを me プッシュすることです。

ありがとう。

役に立ちましたか?

解決

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

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

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

他のヒント

おそらく南を見てください:

http://south.aeracode.org/

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

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

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

これは、プルオーバーによって変更が上書きされるため、自分でダバターゼを変更できないことを意味します。

ライブデータベースに対して行う変更は、Southを使用している場合のみです。コードをサーバーにプッシュし、 migrate を実行してデータベーススキーマを更新します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top