田舎社会人のいろいろ学習記

Python、英語、その他いろいろ

【django】データベースをmysqlに変更する方法【Python】

f:id:vigilantPotato:20210810151507p:plain
データベースとしてデフォルトで指定されているsqlite3を、mysqlに変更する方法を整理する。


【スポンサーリンク】


mysqlのインストール

最初に、mysqlサーバーのソフトウェアをインストールし、ユーザー名、パスワードを設定する。 mysqlサーバーダウンロード 細かいダウンロード・インストール方法はここには記載しない。 コマンドプロンプトでmysqlを操作できるように、PATHを通しておく。

[↑ 目次へ]


データベース作成

mysqlにログインし、データベースを作成する。今回はデータベース名を「mysql_test」とする。

まず、以下のコマンドを実行する。

mysql -u 設定したユーザー名 -p

「Enter password:」と表示されるので、設定したパスワードを入力する。

ログインできたら、以下のコマンドを実行してデータベースを作成する。

CREATE DATABASE mysql_test;

「Query OK, 1 row affected」と表示されたらOK。以下のコマンドを実行してmysqlを閉じる。

exit

settings.pyの修正

使用するデータベースをmysqlに変更するために、settings.pyを修正する必要がある。

デフォルトでは以下の様な記述があり、sqlite3を使用するように指定されている。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

この場所を以下の様に修正し、mysqlを指定する。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysql_test',
        'USER': '設定したユーザー名',
        'PASSWORD': '設定したパスワード',
    }
}

NAMEには先ほど作成したデータベースの名前を記入しておく。

[↑ 目次へ]


【スポンサーリンク】


mysqlclientモジュールのインストール

Djangoでmysqlを使用するためには、mysqlclientモジュールをインストールしておく必要がある。 以下のコマンドを実行してmysqlclientをインストールしておく。他ファイルの更新は不要。

pip install mysqlclient


マイグレーション・テーブルの確認

設定が完了したら、以下のコマンドを実行してマイグレーションを行う。 エラーなくマイグレーションが完了すればOK。

python manage.py makemigrations

python manage.py migrate

mysqlを起動し、データベース内にテーブルが作成されたか確認を行う。 まず、mysqlにログインする。

mysql -u 設定したユーザー名 -p

「Enter password:」と表示されるので、設定したパスワードを入力する。

ログインできたら、以下のコマンドを実行してデータベースを選択する。

use mysql_test;

「Database changed」と表示されたことを確認する。

以下のコマンドを実行することでテーブル一覧を表示する。

show tables;

以下の通り、Djangoが自動で作成するテーブル一覧が表示されればOK。

+----------------------------+
| Tables_in_mysql_test       |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
+----------------------------+

[↑ 目次へ]


【スポンサーリンク】