Djangoをレガシーデータベースと統合する
Djangoは新しいアプリケーションの開発に最適ですが、レガシーデータベースに統合することはかなり可能です。 Djangoには、このプロセスを可能な限り自動化するためのユーティリティがいくつか含まれています。
このドキュメントは、チュートリアルで説明されているように、Djangoの基本を理解していることを前提としています。
Djangoをセットアップしたら、この一般的なプロセスに従って既存のデータベースと統合します。
Djangoにデータベースパラメータを与える
Djangoに、データベース接続パラメーターとデータベースの名前を伝える必要があります。 これを行うには、:setting: `DATABASES` 設定を編集し、'default'
接続の次のキーに値を割り当てます。
- :setting: `NAME`
- :setting: `ENGINE `
- :setting: `USER`
- :setting: `PASSWORD`
- :setting: `HOST`
- :setting: `PORT`
モデルを自動生成する
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の管理サイトを介してオブジェクトを編集し、それに応じてモデルファイルを編集してみてください。