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',
}
}
設定項目
| 項目 | 説明 |
|---|---|
| ENGINE | PostgreSQLを指定 |
| NAME | データベース名 |
| USER | PostgreSQLユーザー |
| PASSWORD | パスワード |
| HOST | 通常はlocalhost |
| PORT | PostgreSQLポート |
マイグレーション実行
設定が終わったら
Djangoのマイグレーションを実行します。
python manage.py makemigrations
続いて
python manage.py migrate
これでDjangoのテーブルが
PostgreSQLに作成されます。
Django管理画面もPostgreSQLを使用
Djangoの管理画面も
PostgreSQLを使うようになります。
ユーザー作成
python manage.py createsuperuser
サーバー起動
python manage.py runserver
管理画面
ここでデータを追加すると
PostgreSQLに保存されます。
自分の環境
現在の自宅サーバーは
Ubuntu Server
↓
Docker
↓
WordPress
という構成ですが、
ナンバーズ3・ナンバーズ4のデータは
Django
↓
PostgreSQL
で管理しています。
スクレイピングデータを保存して
分析などにも使えるようにしています。
まとめ
Djangoでは
- SQLite(開発用)
- PostgreSQL(本番向き)
という形で使い分けることが多いです。
PostgreSQLを使う場合は
- psycopg2インストール
- settings.py設定
- migrate実行
という手順で接続できます。
今後は
- Djangoでスクレイピングデータを保存する方法
- PostgreSQLでデータ分析する方法
なども記事にまとめていこうと思います。


コメント