[Django] DBにMySQLを使う方法

DjangoのDBはデフォルトでSQLite3を使うようになっています。今回はDBをMySQLに変更する方法を記載します。

mysqlclientのインストール

$ sudo pip install mysqlclient==2.1.0
$ sudo pip install pymysql
$ sudo python -m pip install cffi

settings.pyの変更

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'databasename',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

上記のようにMySQLの設定を記載します。元々書かれてあったSQLite3の設定はコメントアウトしておきます。(削除しても良い)

__init__.py

setting.pyだけの変更だとMySQLが正常に動きません。こちらのファイルにも記述が必要です。

import pymysql
pymysql.install_as_MySQLdb()

エラー対処

MySQLの設定がうまくいっていない場合、接続時にエラーが出ます。本サイトの下記ページでエラー例を記載してあります。

mysqlclientインストール時にエラーがでる場合、下記を試す。

$ sudo apt upgrade gcc

runserver で 

from cryptography.hazmat.bindings._openssl import ffi, lib
ModuleNotFoundError: No module named ‘_cffi_backend’

のエラーがでるときは下記を実行

$ sudo python -m pip install cffi

#上記でうまく行かない場合は上記実行前に下記コマンドを実行
$ sudo apt remove cffi


Author: webmaster