DjangoとPostgreSQLデータベースを連携させるための初期設定
Djangoのフロント側は自由にいじれるようになったので、次はデータベース周りを扱えるようにします!
DjangoではデフォルトでSQLiteを使うような設定になっていて、Railsと同じですね。
実際にはMySQLやPostgreSQLを使うのが一般的なので、取り急ぎ私の現場でも使っているPostgreSQLを使えるよう設定します。
前提条件
Djangoと上記DBがすでにインストールされている想定で話を進めます。
PostgreSQLとDjangoのインストール方法についてはこちら↓
https://hodalog.com/run-django-app-using-docker-compose/
モジュールのインストール
psycopg2 と psycopg2-binary というモジュールが必要になります。
pip install psycopg2 psycopg2-binary
プロジェクトの作成
まだDjangoのプロジェクトを作成していない場合は作ります。
django-admin startproject hogehoge
環境変数の設定
settings.py にある DATABASES という変数を次のようにします。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'データベース名',
'USER': 'ユーザー名',
'PASSWORD': 'パスワード',
'HOST': 'ホスト名',
'PORT': 5432,
}
}
NAME, USER, PASSWORD, HOSTの4つをプロジェクトごと、環境ごとに修正する感じです。
DBの作成
PostgreSQLにはデフォルトでpostgresという名前のユーザーとDBが作成されるのですが、プロジェクトに合わせて新しいDBとユーザーを作成します。
ユーザーにpostgresを指定し、PostgreSQLへ接続します。
psql -U postgres
DATABASESに設定したデータベース名でDBを作り、DBヘアクセスするためのユーザーとパスワードを設定します。
CREATE DATABASE hello_app;
CREATE USER admin WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE hello_app TO admin;
データベースから抜けます。
\q
or
exit
マイグレーション
Djangoの機能を使ってマイグレーションします。
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
admin画面にログイン
Djangoは標準でadmin画面が用意されています。これはRailsにもないめっちゃ便利な機能です。
マイグレーションで作成したユーザーでこの管理画面に入れるか確認します。
管理画面ページは ホスト名/admin でアクセスできます。
作成したユーザーで入ると、管理画面をいじれます。
まとめ
DjangoでPostgreSQLを使うための初期設定をまとめました。やったね!