Django + PostgreSQLでデータベースを運用する方法

PostgreSQL

PythonのWebフレームワークである Django では、
データベースとして様々なDBを利用できます。

例えば

  • SQLite(デフォルト)
  • MySQL
  • PostgreSQL

などです。

自分の環境では
ナンバーズ3・ナンバーズ4のスクレイピングデータを管理するために
Django + PostgreSQL
で運用しています。

この記事では

  • DjangoでPostgreSQLを使う方法
  • 必要なパッケージ
  • settings.py設定

をまとめておきます。


DjangoのデフォルトDBはSQLite

Djangoプロジェクトを作成すると、
最初は SQLite が使われています。

settings.pyを見ると

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}

SQLiteは

  • セットアップ不要
  • 軽量
  • ファイル型DB

なので開発には便利です。

ただし

  • データ量が増える
  • 複数接続
  • 本番運用

を考えると PostgreSQLの方が安心です。


DjangoでPostgreSQLを使うメリット

DjangoとPostgreSQLは相性が良く、
公式でもよく使われる構成です。

主なメリットはこのあたりです。

安定性が高い

PostgreSQLは長年使われている
信頼性の高いデータベースです。


SQL機能が豊富

PostgreSQLは

  • JSON
  • 集計
  • 高度な検索

などが強く、
データ分析にも向いています。


Djangoとの相性が良い

Django ORMはPostgreSQLの機能を
多くサポートしています。

そのため

  • パフォーマンス
  • 機能面

の両方でメリットがあります。


必要なパッケージをインストール

DjangoからPostgreSQLへ接続するには
psycopg2 が必要です。

インストール

pip install psycopg2-binary

これでDjangoからPostgreSQLへ接続できるようになります。


settings.pyを変更

Djangoの設定ファイル

settings.py

を編集します。

SQLite設定

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}

これを PostgreSQL設定に変更します。


PostgreSQL接続設定

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'lottery_db',
'USER': 'django_user',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}

設定項目

項目説明
ENGINEPostgreSQLを指定
NAMEデータベース名
USERPostgreSQLユーザー
PASSWORDパスワード
HOST通常はlocalhost
PORTPostgreSQLポート

マイグレーション実行

設定が終わったら
Djangoのマイグレーションを実行します。

python manage.py makemigrations

続いて

python manage.py migrate

これでDjangoのテーブルが
PostgreSQLに作成されます。


Django管理画面もPostgreSQLを使用

Djangoの管理画面も
PostgreSQLを使うようになります。

ユーザー作成

python manage.py createsuperuser

サーバー起動

python manage.py runserver

管理画面

http://127.0.0.1:8000/admin

ここでデータを追加すると
PostgreSQLに保存されます。


自分の環境

現在の自宅サーバーは

Ubuntu Server

Docker

WordPress

という構成ですが、

ナンバーズ3・ナンバーズ4のデータは

Django

PostgreSQL

で管理しています。

スクレイピングデータを保存して
分析などにも使えるようにしています。


まとめ

Djangoでは

  • SQLite(開発用)
  • PostgreSQL(本番向き)

という形で使い分けることが多いです。

PostgreSQLを使う場合は

  1. psycopg2インストール
  2. settings.py設定
  3. migrate実行

という手順で接続できます。

今後は

  • Djangoでスクレイピングデータを保存する方法
  • PostgreSQLでデータ分析する方法

なども記事にまとめていこうと思います。

コメント

タイトルとURLをコピーしました