29

モデルにいくつかの変更を加えた後 (モデルの新しいフィールドや新しいモデルなど)、これらの変更を入力済みのデータベースに反映する最良の方法は何ですか?


PS: 評価された 1 つの場所で多くのソリューションを見たいと思っていました。どうやら、より多くのソリューションがすでにここにリストされています。

4

6 に答える 6

24

もう 1 つのテクニックは、manage.py に dumpdata および loaddata 引数を使用し、その間にデータベースを強制終了することです。

  1. python manage.py dumpdata > dump.json
  2. 外部ツールを使用して、影響を受けるテーブルを削除するか、データベース全体を削除します
  3. python manage.py loaddata dump.json

詳細については、manage.py ドキュメントを参照してください。

于 2008-10-16T18:31:29.047 に答える
18

ここで同様の質問をしたところ、かなりの数の回答が得られました。

SQL を使用して手動でダンプとリロードを行う、フィクスチャを使用する、または Django 用の「新しい」スキーマ進化パッケージの 1 つを使用するなど、非常に多くの方法があります。

于 2008-10-06T21:23:41.807 に答える
3

変更の範囲によって異なります。ALTER を超えている場合は、大手術を行っています。戻ることができるように、モデルとデータベースのバックアップを作成します。

私の好みは、新しい (改訂、修正、拡張された) モデルを新しいアプリケーションとして入れることです。URL などはなく、モデルだけです。

  1. 新しいモデルを新しいアプリケーションとして作成します。テストを作成して、動作することを確認します。
  2. syncdb を使用して、この新しいモデルの暫定的な実装を構築します。
  3. 古いモデルにクエリを実行し、新しいモデルをロードするための小さな 1 回限りのユーティリティを作成します。純粋な SQL でこれを試してみてください。私は単純なクエリを作成し、ループを構築して保存することを好みます。
  4. 新しいモデルがロードされたら、これを JSON ファイルにダンプできます。

古いモデルからデータを取り出したら、優先する新しい形式で DB を再構築できます。

  1. 新しいモデルを既存のアプリケーションに移動します。
  2. アプリケーションのテーブルの古いバージョンを削除します。
  3. syncdb を使用して新しいテーブルを構築します。
  4. JSON ファイルにデータをロードします。
于 2008-10-06T20:23:35.237 に答える
3

Django には独自の組み込みの移行機能が追加されました。ドキュメントは次のとおりです。

https://docs.djangoproject.com/en/dev/topics/migrations/

于 2014-09-11T22:07:18.277 に答える
2

manage.py sqlall で新しい列のパラメーターを確認し、Alter table ステートメントを使用して手動でデータベースに追加します。この方法では、データベースをやり直す必要はありません。ただし、SQLの知識が必要です...

こちらをご覧ください(「データベース スキーマの変更」まで下にスクロールします)。

于 2008-10-06T20:28:28.363 に答える
0

Perform these steps in order may help you:

For more details,

ここをクリック: http://south.readthedocs.org/en/latest/

1)python manage.py schemamigration apps.appname --initial

上記の手順では、デフォルトとして移行フォルダーが作成されます。

2)python manage.py migrate apps.appname --fake

偽の移行を生成します。

3)python manage.py schemamigration apps.appname --auto

次に、必要に応じてフィールドを追加し、上記のコマンドを実行できます。

4)python manage.py migrate apps.appname

次に、ファイルをデータベースに移行します。

于 2013-10-25T10:06:21.687 に答える