0
2

More than 1 year has passed since last update.

djangoでsqliteの代わりにMySQLを利用する

Posted at

目的

djangoのチュートリアルなどは基本的に準備の要らないsqliteで行ってきたが、より実務に合わせたものにしたく、使われることの多いMySQLを今回は利用する

実施環境

ハードウェア環境

項目 情報
OS macOS Catalina(10.15.7)
ハードウェア MacBook Air (11-inch, Early 2015)
プロセッサ 1.6 GHz デュアルコアIntel Core i5
メモリ 4 GB 1600 MHz DDR3
グラフィックス intel HD Graphics 6000 1536 MB

ソフトウェア環境

項目 情報
homebrew 3.3.8
mysql Ver 8.0.27 for macos10.15 on x86_64
python 3.8.12
django 3.1.2
anaconda 4.10.1
pip 21.2.4

前提

・python3系
・django
・homebrew
等がインストール済みであること

概要

  1. MySQLのインストール
  2. MySQLの起動
  3. データベースの作成
  4. djangoのsettings.pyを修正
  5. ドライバのインストール
  6. sqliteの時と同様にマイグレーション

詳細

1. MySQLのインストール

homebrewでmysqlをインストールする

brew install mysql

今回は8.0.27(最新版)をインストール

2. MySQLの起動

インストールしたMySQLを起動する

mysql.server start

mysqlのアクセスユーザー名とパスワードを設定する

mysql -u root -p

3. データベースの作成

mysql> create database test_db;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

4. djangoのsettings.pyを修正

settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # sqliteからMySQLに変更
        'NAME': 'database_name', # 3で作成したプロジェクトで使用する予定のデータベース名
        'USER': 'root', # MySQLのユーザー名
        'PASSWORD': '', # ユーザー名と共にログインに利用したpassword
    }
}

5. ドライバのインストール

ドライバって何?

こちらにも記載のあるように一般的には
マウスやキーボードやCPUやモニタなどのデバイスを動かすためのソフトのことをドライバという

pythonでMySQLを使う場合にもpythonがMySQLに接続するためのドライバが必要となる。
ドライバはいくつか種類があるが、推奨とされているmysqlclientを利用する

$ pip install mysqlclient

6. sqliteの時と同様にマイグレーション

python manage.py makemigrations
python manage.py migrate

マイグレーション完了といきたいところですが、

django.db.utils.OperationalError: (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/opt/anaconda3/envs/djangoenv/lib/plugin/caching_sha2_password.so, 2): image not found")

このようなエラーが表示された場合はこちらの記事を参考にユーザーの認証方法を変更する。

マイグレーションをもう一度実行する

python manage.py makemigrations
python manage.py migrate
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
Applying tinder.0001_initial... OK
Applying tinder.0002_auto_20211219_1625... OK

気持ちいい!!!!

参考文献

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2