Djangoとレガシーデータベースの統合—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/2.2.x/howto/legacy-databases
移動先:案内検索

Djangoをレガシーデータベースと統合する

Djangoは新しいアプリケーションの開発に最適ですが、レガシーデータベースに統合することはかなり可能です。 Djangoには、このプロセスを可能な限り自動化するためのユーティリティがいくつか含まれています。

このドキュメントは、チュートリアルで説明されているように、Djangoの基本を理解していることを前提としています。

Djangoをセットアップしたら、この一般的なプロセスに従って既存のデータベースと統合します。

Djangoにデータベースパラメータを与える

Djangoに、データベース接続パラメーターとデータベースの名前を伝える必要があります。 これを行うには、:setting: `DATABASES` 設定を編集し、'default'接続の次のキーに値を割り当てます。


モデルを自動生成する

Djangoには、既存のデータベースをイントロスペクトすることでモデルを作成できる:djadmin: `inspectdb` というユーティリティが付属しています。 次のコマンドを実行すると、出力を表示できます。

$ python manage.py inspectdb

標準のUnix出力リダイレクトを使用して、これをファイルとして保存します。

$ python manage.py inspectdb > models.py

この機能は、最終的なモデル生成ではなく、ショートカットとして意図されています。 を参照してください :djadmin: `inspectdbのドキュメント ` 詳細については。

モデルをクリーンアップしたら、ファイルにmodels.pyという名前を付けて、アプリを保持するPythonパッケージに入れます。 次に、アプリを:setting: `INSTALLED_APPS` 設定に追加します。

デフォルトでは、:djadmin: `inspectdb` はアンマネージモデルを作成します。 つまり、モデルのMetaクラスのmanaged = Falseは、各テーブルの作成、変更、および削除を管理しないようにDjangoに指示します。

class Person(models.Model):
    id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=70)
    class Meta:
       managed = False
       db_table = 'CENSUS_PERSONS'

Djangoにテーブルのライフサイクルの管理を許可する場合は、上記の Managed オプションをTrueに変更する必要があります(または、Trueがデフォルト値)。


コアDjangoテーブルをインストールします

次に、:djadmin: `migrate` コマンドを実行して、管理者権限やコンテンツタイプなどの追加で必要なデータベースレコードをインストールします。

$ python manage.py migrate

テストと調整

これらが基本的な手順です。ここから、Djangoが生成したモデルを、希望どおりに機能するまで微調整する必要があります。 DjangoデータベースAPIを介してデータにアクセスし、Djangoの管理サイトを介してオブジェクトを編集し、それに応じてモデルファイルを編集してみてください。