レガシーなデータベースと Django の統合¶
Django は新しいアプリケーションを開発するのに最適ですが、レガシーなデータベースと統合することも可能です。Django には、それを自動化するいくつかのユーティリティが含まれています。
このドキュメントは チュートリアル に書かれているような、Django についての基本的な知識を持っていることを想定しています。
Django のセットアップが完了したら、次の一般的なプロセスに従うことで、既存のデータベースと統合することができます。
Django に既存データベースのパラメータを与える¶
まず、Django に既存のデータベース接続のパラメータとデータベースの名前を教えてあげる必要があります。そのために、設定ファイルの DATABASES
を編集して、'default'
接続の以下のキーに対して値を設定します。
モデルを自動生成する¶
Django には inspectdb
と呼ばれるユーティリティが付属しており、既存のデータベースを調査することでモデルを作成できます。次のコマンドを実行すると出力が表示できます。
$ python manage.py inspectdb
通常の Unix 出力のリダイレクトにより、ファイルとして保存します。
$ python manage.py inspectdb > models.py
この機能は最終的なモデル生成ではなく、ショートカットとしての手段です。さらなる情報は、documentation of inspectdb
を参照してください。
モデルをクリーンアップしたら、ファイルを models.py
と名付け、アプリが含まれる Python パッケージの中に配置します。そして、アプリを INSTALLED_APPS
の設定に追加します。
デフォルトでは、inspectdb
は未管理 (unmanaged) なモデルを作成します。つまり、モデルの 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
がデフォルト値なので削除) できます。
core Django テーブルのインストール¶
次に、migrate
コマンドを実行すると、追加で必要な admin 権限などのデータベースレコードがインストールされます。
$ python manage.py migrate
テストと修正¶
以上は基本的なステップです。ここからは、Django が生成したモデルを期待通りに動作するようになるまで微調整することになるでしょう。必要に応じて、Django データベース API 経由でデータにアクセスしたり、Django の admin サイトで objects を編集したり、models ファイルを編集してみてください。