django のデータベースを postgresql から mysql へ

今や mysql も Oracle 傘下になってしまい、全くフリーのデータベースは postgresql だけになってしまいました。

これまでは kagoya の vps の django で postgresql でアプリを動かしていましたが、xserver 上では postgresql が使えず mysql だけなので、現在 kagoya の vps で動いているデータを xserver に移植しようとすると mysql に変更する必要があります。

/bin/sh: 1: mysql_config: not found

mysqlclient を pip でインストールしようとすると上のようなエラーが出ます。

まず以下を実行して、


sudo apt install python3-dev libmysqlclient-dev

次に mysqlclient をインストール。


pip install mysqlclient

mysql でデータベースを作っておく

migration する前に、mysql でデータベースを作っておきます。

mysql> 
CREATE DATABASE sample;

settings.py の書き換え

settings.py を以下のように書き換えます。


DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'sample',
    'USER': 'root',
    'PASSWORD': '',
    'HOST': 'localhost',
    'PORT': '',
    }
}

migration とインポート

まずは migration。


python manage.py makemigrations
python manage.py migrate

エクスポートしてあったダンプファイルをインポートします。


python manage.py loaddata ~/dump.json

django というのは入るのは大変ですが、一度入ってしまえばいろいろなことが圧倒的な速さで簡単にできますね。

でも、今後は laravel に変更する予定なので、新しく作成された mysql のデータベースに対して laravel で操作することになります。