DjangoでMySQLを設定しよう|動画付きで丁寧に解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年10月)

✔このような方へ向けて書かれた記事となります

「DjangoでMySQLデータベースを使いたい」

「MySQL側の設定ってどうすれば良いの?」

「Djangoの設定を具体的に見たい」

✔当記事を通じてお伝えすること

  • DjangoでMySQLを使うための設定
  • MySQLでデータベース・ユーザーを作成する
  • Djangoのsettings.pyを書き換える方法

Djangoでは、デフォルトのsqlite3だけでなく、MySQLを使うことが可能。

その方法を具体例付きで丁寧に解説しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

MySQLの事前設定

こちらではMySQLにおける事前設定をご覧いただきます。

足りない箇所がないか確認しておきましょう。

  • MySQLのインストール
  • MySQLにログイン
  • Django用のデータベース作り
  • MySQLのユーザー作り
  • ユーザーに権限を付与
  • GRANTテーブルの再読込

MySQLのインストール

MySQLのインストールはこちらで確認できます。

mysql --version

インストールが必要な方は以下の記事を参考にしてください。

MySQLにログイン

mysql -u root -p

Django用のデータベース作り

CREATE DATABASE itcdb;

MySQLのユーザー作り

CREATE USER 'itcuser'@'localhost' IDENTIFIED BY 'Password1234@';

ユーザーに権限を付与

GRANT ALL ON itcdb.* TO 'itcuser'@'localhost';

もし権限を限定するなら以下から選択しましょう。

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'itcuser'@'localhost' WITH GRANT OPTION;

GRANTテーブルの再読込

FLUSH PRIVILEGES;

Djangoの設定

MySQLの設定を終えたら、Django側の設定です。

settings.py上で、設定を書き換えましょう。

  • 設定ファイルの書き換え
  • mysqlclientのインストール
  • mysqlclientのインストールエラー対策

設定ファイルの書き換え

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'itcdb', 
        'USER': 'itcuser', 
        'PASSWORD': 'Password1234@', 
    }
}

mysqlclientのインストール

mysqlclientをインストールしていないと、以下のようなエラーが発生します。

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

mysqlclientのインストールをインストールしましょう。

pip install mysqlclient

mysqlclientのインストールエラー対策

以下のようにmysqlclientのインストールが上手くいかない場合があります。

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for mysqlclient
Failed to build mysqlclient
ERROR: Could not build wheels for mysqlclient, which is required to install pyproject.toml-based projects

Ubuntuであれば以下のようにして解決できます。

sudo apt install python3-dev default-libmysqlclient-dev build-essential

ほかのOSでは、こちらのpypi.orgの文書を参考にしてください。

ただしコレでも動かない場合があります。

その場合は、Pythonのバージョンに合わせたpython3.xx-devをインストールしてください。

$ python --version
3.11.5
$ sudo apt install python3.11-dev

DjangoでMySQLを扱う場合の補足事項

以上でDjangoとMySQLの設定は完了です。

ただし以下のような補足事項も知っておくと便利です。

  • Dockerコンテナ上で設定する場合
  • テスト用のデータベースを設定
  • PostgreSQLを使いたい場合

Dockerコンテナ上で設定する場合

Dockerで、Ubuntuのコンテナを使用する場合、以下のパッケージが必要です。

apt-get install pkg-config python3 python3-pip

テスト用のデータベースを設定

テスト用のデータベースでは特別な設定が必要です。

以下の記事の補足をご覧ください。

PostgreSQLを使いたい場合

タイトルとURLをコピーしました