Django既存のデータベースを使用してmodelsを生成

2461 ワード

通常、Djangoサービスを確立し、Djangoのmodelsを介してデータベースを生成します.しかし、既存のデータベースからDjangoのmodelsを生成する逆操作が必要になる場合があります.たとえば、現在のデータベースに対してDjangoを使用してRESTのインタフェースを作成する必要があります.
1 Djangoデータベース接続パラメータの構成
新しいDjanoプロジェクト、app(blogappという仮定)を作成します.settings.pyでデータベースの接続パラメータを設定し、DjangoとMySQLデータベースの接続を参照します.
2データベースからモデルを生成する
まず、inspectdbmodels.pyを生成する必要があります.主なコマンドは
$ python manage.py inspectdb

blogappの下のmodelsなどのmodelsを指定するとします.
$ python manage.py inspectdb > blogapp/models.py

3 modelsでの調整managed = True自分が必要とするモデルについては,後でCRUD添削改ざんを行う必要がある場合はMetaにmanaged = Trueを設定する必要がある.
class PostsPost(models.Model):
    title = models.CharField(max_length=150)
    content = models.TextField()
    timestamp = models.DateTimeField()
    updated = models.DateTimeField()

    class Meta:
        managed = True
        db_table = 'posts_post'

4 migrateの場合、--fake-initialを使用
最初のデータ移行migrateでは、--fake-initialパラメータを使用する必要があります.データベースがすでに存在するため、--fakeを持たないとエラーが発生し、移行が成功しません.
$ python manage.py makemigrations
$ python manage.py migrate --fake-initial

5テスト効果
blog/admin.pyにmodelsを登録します.
from django.contrib import admin
from .models import PostsPost

admin.site.register(PostsPost)

adminを使用して添削を行い、MySQLでデータベース操作が成功したことを確認します.
6 --fakeを使用した後、modelsを修正する必要があります—fakeではなく、データベース構造を実際に変更する必要がある場合は、
python manage.py migrate --fake core 0003
python manage.py migrate core

How to redo a migration on django 1.8 after using --fake
コメント:
最後に、Djangoの全体的なグローバルmigrateは、変化が見つからない場合があります.
$ python manage.py migrate

やはりappを制定してmigrateを行うことを提案します
$ python manage.py migrate your_app

リファレンス
公式ドキュメントの最新ガイド:
公式英語ドキュメント:Auto-generate the models
公式英語ドキュメント:inspectdb
公式英語ドキュメント:migrate-fake-initial
Djangoと古いデータベースを統合
中国語の紹介:
既存のデータベース統合django orm(Database to Models)
データベースからdjangoを逆生成するmodels
既存のデータベースでDjangoプロジェクトを作成する方法
Django既存のデータベースに基づいてモデルを構築
Django Book生成したModelsをクリーンアップするためのいくつかの提案
既存のデータベースとアプリケーションの統合
Django migrateに関する2つのパラメータ—fake-initial—fake:
django migrationの使用
--fake-initial vs --fake in Django migration?