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

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

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

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

前提条件

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

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

Docker Composeの使い方を学ぶためにDjangoの開発環境を構築した

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

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を使うための初期設定をまとめました。やったね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください