DjangoでDBにアクセスするための基本設定

2010年2月14日

DjangoはRDBに対する操作をすべてクラスオブジェクト経由で実現しています。
これをObject-relationalマッピング(O/Rマッピング)と呼んでいます。
SQLにこだわりたい人は、SQLをそのまま叩くことも許されていますが、 開発を効率化するためにこのO/Rマッピングを使用することをお勧めします。

まずは、基本的なクラス(テーブル)を定義してみます。

今回は、メールアドレス・名前を格納する簡単なクラスを定義してみます。 まずはDjangoでDBを使えるようにするためにsettings.pyを設定します。

1
2
3
DATABASE_ENGINE = 'postgresql'
DATABASE_NAME = 'maildb'
DATABASE_USER = 'dbusr'

DjangoではPostgreSQL、MySQL、SQLite、Oracle等の主要なDBに対応していますので いずれかお好みのRDBをインストールしておき、上記のように「DATABASE_ENGINE」に 設定してください。今回はpostgresqlを定義しています。


次に、このプロジェクトで使用するDB名を「DATABASE_NAME」に定義します。
実態は完全にPostgresqlで管理されるDBとなりますので、DB名の重複には注意してください。
# 既存のDB名一覧を見るためには「psql -l」としてください。
今回は「maildb」と名付けておきましょう。

最後にDATABASE_USERです。
これは、maildbにアクセスするユーザ名です。
当然、createusrで予めPostgresql内にユーザを作成しておく必要があります。
CGIからのアクセスならば、CGIユーザ(Debianならばwww-data)をここに設定しておきます。

setting.pyの設定が終わったら、DBの作成とサブコンポーネントの作成を行います。
1
2
$ python manage.py startapp maildb
$ createdb maildb -O dbusr

これで、DBにアクセスするための基本設定は完了です。

後はモデルを作成して「python manage.py syncdb」とすることで、 自動的にテーブル群を作成してくれるようになります。


具体的なモデル定義例はまた後日。