サイドバーの「Django ドキュメント検索」というプレースホルダの入った検索では、Django ドキュメント (Django 2.1) の公式サイト内を検索できます
Django のデータベースを MySQL から PostgreSQL に移行

目次

はじめに

これまで MySQL で構築していた Django アプリケーションのデータベースを PostgreSQL に変更した際の作業の記録です。この手の作業は時間が経つと忘れてしまうので、自分自身の備忘録でもあります。

ドライバのインストール

PostgreSQL のドライバ psycopg2 をインストールします。

$ pip install psycopg2-binary

 

データベースの準備


次にデータベースを準備します。ここでは PostgreSQL のインストールは済んでいるものとします。 (インストールは PostgreSQL のインストール [Linux MInt 19] を参照してください。) また、下記パラメータを使用するものとします。

データベース作成権限のあるユーザ: pguser
データベースパラメータ:

  • データベース名: dbname
  • DBユーザ名: dbduser
  • パスワード: password

まず psql を起動します。

$ psql -U pguser

続いて psql 内で下記設定を行います。(# は psql のプロンプトです。)

# CREATE DATABASE dbname;
# CREATE USER dbduser CREATEDB PASSWORD 'password';
# ALTER ROLE dbduser SET client_encoding TO 'utf8';
# ALTER ROLE dbduser SET default_transaction_isolation TO 'read committed';
# ALTER ROLE dbduser SET timezone TO 'UTC';
# GRANT ALL PRIVILEGES ON DATABASE dbname TO dbduser;
# \du
 
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 pguser    | Superuser                                                  | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 dbuser    | Create DB                                                  | {}

3 〜 5行目 (ALTER 文) は Django の推奨設定に従いました。
作成するユーザ権限については、テストDBを作成できるよう CREATEDB 権限を付与しています。

settings.py の設定

settings.py の DATABASES パラメータを修正します。 Engine 以外は、MySQL と変わらないと思います。

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

データベースのマイグレーション

settings.py を正しく修正できれば、マイグレーションによってデータベース内にテーブルを作成できます。

$ python manage.py makemigrations appname
$ python manage.py migrate

 

MySQL からデータを移行する場合は、Django でデータをダンプ/ロードする を参照してください。

参考

データベース | Django documentation | Django

低価格なのに高速・多機能・高セキュリティ 月額400円(税別)から最大容量100GB WordPress専用高速サーバー Z.com WP
おすすめの記事