python
PR

【PostgreSQL】DjangoでPostgreSQLを使うときの設定方法

えりる
記事内に商品プロモーションを含む場合があります

この記事ではPythonのウェブアプリ開発のフレームワークであるDjangoでPostgreSQLを使うときの設定方法を解説します。

DjangoにはデフォルトでSQLiteというリレーショナルデータベースが付属していますが、より高機能なPostgreSQLを使いたい場面も多いと思います。
初めて使う場合なんかは特によくわからないと思うので、ここで詳しく解説します。

PostgreSQL のインストールと設定

PostgreSQLのインストール

まずはPostgreSQLをインストールします。
以下の記事でインストール方法とPostgreSQLの操作ツールであるpsql の使い方を解説していますので参考にしてみてください。

あわせて読みたい
【Ubuntu】PostgreSQL のインストールとpsqlの使い方【Linux】
【Ubuntu】PostgreSQL のインストールとpsqlの使い方【Linux】

インストール方法はUbuntu(WSL2でもOK)向けですが、ウェブアプリ開発をするならLinuxがいいかなと思うのでこれを機にチャレンジしてみるのがよいと思います。
psql の使い方は共通です。

Windowsに直接インストールするならPostgreSQLのインストールページ からDownload the Installer をクリックしてインストーラをダウンロードできます。

ユーザーとデータベースの作成

まず、psql を開いて対話形式で設定していきましょう。
ここでは例としてユーザー名を eriru、データベース名をerirudbとして作ってみます。

以下のコマンドでユーザーを作成します。

CREATE USER eriru WITH PASSWORD '好きなパスワードを入力';

次に以下を実行してデータベースを作成します。

CREATE DATABASE erirudb WITH OWNER eriru;

次にユーザーの設定を以下のとおり行います。

ALTER ROLE eriru SET client_encoding TO 'utf8';
ALTER ROLE eriru SET default_transaction_isolation TO 'read committed';
ALTER ROLE eriru SET timezone TO 'Asia/Tokyo';

タイムゾーンの設定はDjangoのTIME_ZONEの設定(settings.pyに書いてある)と整合させてください。
これでPostgreSQL側の設定はOKです。

Django 側の設定

PostgreSQL への接続設定は、settings.pyDATABASES セクションで行います。
settings.pyに以下の通り記述します。

# settings.py

DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.postgresql',
        'NAME': 'erirudb',
        'USER': 'eriru',
        'PASSWORD': '設定したパスワード',
        'HOST': 'localhost',  # PostgreSQLが動作しているホスト名またはIPアドレス
        'PORT': '',           # PostgreSQLのポート番号 (デフォルトは5432, 空欄でデフォルトを使用)
    }
}

# タイムゾーン設定 (PostgreSQLのtimezone設定と整合させる)
USE_TZ = True
TIME_ZONE = 'UTC' # PostgreSQLが'UTC'ならこちらも'UTC'に。
                  # 日本時間で表示したい場合は、アプリケーション側で変換するか、
                  # TIME_ZONE = 'Asia/Tokyo' に設定し、データベース側も合わせる。

注意点として、テスト環境であればこれでも大丈夫ですが、セキュリティ的にはsettings.pyにNAME~PORTまでの項目を直接記述するのは危ないので、.envファイルを別途用意してそこから読み込むか、環境変数から読み込むようにしてください。

まとめ

この記事ではPythonのウェブアプリ開発のフレームワークであるDjangoでPostgreSQLを使うときの設定方法を解説しました。

以上の設定でDjangoアプリでPostgreSQL データベースと正しく連携できるようになると思います。

えりるさんが気になっている商品紹介コーナー

USB式指紋認証リーダーです。デスクトップパソコンだとパスワード認証になるので、何度も打つのが面倒くさいんですよね。
これをつければ指紋認証ができるようになるので絶対便利。
すごく気になります…!

えりるについて
えりる
えりる
日本のどこかに生息する平成生まれの研究者。とっても理論家と思いきや気分屋さんでもある。基本的にめんどくさがり。修士(工学)を持っている。 Windows, Mac, Linuxの三刀流。
記事URLをコピーしました