DjangoとPostgreSQLデータベースを連携させるための初期設定

Djangoのフロント側は自由にいじれるようになったので、次はデータベース周りを扱えるようにします!

DjangoではデフォルトでSQLiteを使うような設定になっていて、Railsと同じですね。

実際にはMySQLやPostgreSQLを使うのが一般的なので、取り急ぎ私の現場でも使っているPostgreSQLを使えるよう設定します。

前提条件

Djangoと上記DBがすでにインストールされている想定で話を進めます。

PostgreSQLとDjangoのインストール方法についてはこちら↓

https://hodalog.com/run-django-app-using-docker-compose/

モジュールのインストール

psycopg2psycopg2-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の管理画面のログインページ

作成したユーザーで入ると、管理画面をいじれます。

Djangoの管理画面

まとめ

DjangoでPostgreSQLを使うための初期設定をまとめました。やったね!