📑

[Django] MySQLに接続する方法

2021/05/03に公開

DjangoでMySQLを使いたい

DjangoはデフォルトでSQLiteを使うのですが、MySQLを使いたいので設定していきます。

設定手順

ライブラリをインストール

pip install mysqlclient
poetry add mysqlclient

settings.pyを書き換える

settings.pyを書き換えます。調べてみると最低限しか書いてない感じだったり、細かく設定してたりと色々な方がいました。ここ以外の記事も参考にすることをお勧めします。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myapp',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}
キー 説明
ENGINE どのエンジンかを指定する MySQLかSQLiteかPostgreSQLかなど
NAME DB名を指定する あらかじめDBを作成しておく必要がある
USER DBにアクセスするユーザー名
PASSWORD DBにアクセスするユーザーのパスワード
HOST DBのホスト名 docker-composeなどを使っているならサービス名を指定する。’db’とか
PORT DBのホストのポート番号
OPTIONS 今回書いてないけど、色々設定できるっぽい

DBを作成する

MySQLサーバにDBを作成します。

mysql> CREATE DATABASE myapp;

(必要に応じて) DBのユーザーの設定

個人の実験環境なら良いですが、やはりrootを基本操作のユーザーにするのもよろしくないです。特定のユーザーに該当のDBの操作権限だけを与えるのが良いので、その操作方法を下記に示します。

mysql> GRANT ALL ON myapp.* TO user;

接続できているか確かめる

dbshellもrunserverもDBの接続がうまくできないとエラーが出ちゃうのでそれらを実行して確かめてみましょう。

python manage.py dbshell
python manage.py runserver

完了

ここまでできれば完了です。

参考

https://docs.djangoproject.com/en/3.1/ref/databases/

Discussion