PostgresSQLの設定

データベースはPostgresSQLを使用。

Djangoのデフォルトはsqliteになっているが、Herokuが未対応なので、Postgresを使用する。djangoでpostgresを使用するには、psycopg2-binaryパッケージが必要になる。django-herokuパッケージをインストールしておけば自動でインストールされる。

(*このパッケージをインストーする際によくエラーが発生していた。使用しているOSを更新しxcodeなどを最新版にしておいた方が良さそう。他にも原因はいくつかありそう・・・)

まずはバージョンの確認。

(myenv) $ psql --version
psql (PostgreSQL) 12.2

インストールしていない場合、もしくはバージョンが古い場合は使用しているOSに合わせて、インストール/更新を行う。

sudo apt update
sudo apt install -y python3-pip python3-dev libpq-dev postgresql postgresql-contrib

aptコマンドに関しては、以下を参照。

データベースを起動し、プロジェクト用のDBを作成する。core/settings.pyの中に、以下のような箇所があるがここの中身を具体的に作っていくイメージ。

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'データベース名',
    'USER': 'ユーザー名',
    'PASSWORD': 'パスワード',
    'HOST': 'ホスト名',
    'PORT': '',
  }
}

まずはpostgresのターミナルを起動する(仮想環境は起動する必要はない)。 PostgreSQLには、デフォルトでpostgresという名前のユーザーとDBが作成されている。

(myenv) $ psql -U postgres

よく利用するコマンドは、こちらを参照。

すでに作成されているテーブルを確認したい場合は\lで確認することができる。 以下のコマンドでDBを作成する。

CREATE DATABASE データベース名;
CREATE USER ユーザ名 WITH PASSWORD 'パスワード';
GRANT ALL PRIVILEGES ON DATABASE データベース名 TO ユーザ名;

setting.pyの内容を変更。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'データベース名',
        'USER': 'ユーザ名',
        'PASSWORD': 'パスワード',
        'HOST': 'localhost',
        'PORT': '',
    }
}

DBをマイグレーションし、サーバを起動してみる。

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

http://127.0.0.1:8000/にアクセスし、以下の画面が表示されればDBの設定は完了。

最終更新

役に立ちましたか?