- DjangoでMySQLを設定するには?
- SQLiteからMySQLへ変更するには?
本記事ではこのような疑問を解決します。
DjangoにおけるデフォルトのRDBMSはSQLite3です。
しかし、パフォーマンス等の観点からMySQLの方が良いという場合は多いと思います。
そこで今回はDjangoでMySQLを設定する方法を解説していきます。
MySQLをインストールする
まずはMySQLをインストールします。
※すでにMySQLがインストールされている場合は不要
MySQLのインストール方法には公式サイトからダウンロードする方法もありますが、
一般的には各々のOSのパッケージ管理ツールを使用する方法が手っ取り早いでしょう。
今回はmacOSへMySQLをインストールします。
$ brew install mysql
$ mysql –version
mysql Ver 8.0.28 for macos11.6 on x86_64 (Homebrew)
MySQLデータベースを作成する
MySQLをインストールしたら、事前にMySQLでのデータベースを準備しておきましょう。
最初にMySQLを起動します。
$ mysql.server start
Starting MySQL
.. SUCCESS!
起動後はMySQLへのログインです。
インストール直後に登録されているのはユーザー名が”root” でホスト名が”localhost”のユーザーのみであるため、ルートユーザーとしてログインします。
$ mysql -u root
・・・
mysql>
ログイン後、データベースを作成していきます。
以下のコマンドで、’my_database’の部分には任意のデータベース名を指定して実行しましょう。
mysql> create database my_database;
Query OK, 1 row affected (0.01 sec)
以下のコマンドでデータベースが作成されていることを確認しましょう。
mysql> show databases;
+ – – – – – – – – – – – – – – – – – – – – +
| Database
+ – – – – – – – – – – – – – – – – – – – – +
| information_schema
| my_database
| mysql
| performance_schema
| sys
+ – – – – – – – – – – – – – – – – – – – – +
5 rows in set (0.00 sec)
MySQLでの操作は以上なので、exitコマンドでログアウトします。
mysql> exit
Bye
ドライバーをインストールする
次にPythonでMySQLへ接続するためのドライバーをインストールします。
今回はDjango公式サイトでも推奨されているmysqlclientをインストールします。
$ pip install mysqlclient
settings.pyを編集する
settings.pyにてMySQLの設定を行います。
ここでは主に、先ほどMySQLで作成した情報を記述します。
なお、SQLite3の記述がある場合は削除してください。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my_database',
'USER': 'root',
'PASSWORD': '',# 未設定のため、ブランクにする
'HOST': '',# 明示的に設定する場合に記述する(今回はブランクにする)
'PORT': '',# 明示的に設定する場合に記述する(今回はブランクにする)
}
}
各値の説明は以下の通りです。
ENGINE:DBの種類
NAME:DB名
USER:DBにアクセスするユーザー名
PASSWORD:DBにアクセスするユーザーのパスワード
HOST:DBのホスト名
PORT:DBのホストのポート番号
Django側でマイグレートを行う
ここまで完了したらデータベースにモデルを反映させるためにお馴染みのマイグレートを行いましょう。
$ python manage.py makemigrations
$ python manage.py migrate
これでDjangoにおけるMySQLの設定は完了です!
まとめ
以上がDjangoでMySQLを設定する方法になります。
中~大規模のWebアプリを開発する場合は、
プロジェクト作成時の最初にRDBMSを変更しておくことが望ましいでしょう。
本記事が、少しでもDjango開発の手助けになれれば幸いです。