DjangoでSqlite3以外のDB(Mysql)を利用する方法

皆様ごきげんよう、本日はDjangoでデフォルト設定されているデータベース(Sqlite3)以外のデータベースを利用したい場合の設定方法について手順を残しておきます。少しでも参考になりましたら幸いです。

Mysqlを利用する場合の手順

まずは利用しているPCに対してMysqlを公式サイトからダウンロードして、インストールして下さい。
mysqlにログインする時の管理者ユーザーをインストール時に設定する事になります。
MySQL :: Developer Zone

デフォルトでは、プロジェクト全体の設定を管理しているsettings.pyの中にSqlite3の設定が記載されております。この部分をMysql用に修正すればOK。

変更前のコード

# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases

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

変更後のコード
settings.py内の冒頭あたりに「import dj_database_url」を記載してください。そして別途PowerShell(コマンドプロンプト)で「pip install dj_database_url」を実行。

from dotenv import (
    find_dotenv,
    load_dotenv,
)
load_dotenv(find_dotenv()) # dotenvで設定した環境ファイルを読み込む
DATABASES = {
    'default' : dj_database_url.config(conn_max_age=600), # dj_database_url.configでDBが自動的に設定され、conn_max_age=600は高速化の設定
}

管理者ユーザーでログインをしてみる

PowerShellで新しくタブを開き、以下コマンドをうってログインできるか確認する。以前のMysqlで利用できたmysql -u rootは現在セキュリティ強化の為、設定を変更しない限り利用できない模様。

mysql -u 管理者ユーザー名 -p

このコマンドの後にパスワードが要求されるので、問題なければmysqlにログインが可能です。

データベースの作成

Mysqlにログインして、データベースを作成する必要があるので以下コマンドをうつ。

mysql> create database データベース名

作成完了したら、今後データベースをいじる必要は無いのでmysqlからログアウトします。

プロジェクトフォルダ配下に.envファイルを作成

先ほどのsettings.pyに記載した通り、データベースの情報を読み込めるように.envファイルに記載する必要があります。.envファイルは現在無いので、プロジェクトフォルダ配下に作成が必要です。

new-item .env

.envファイルが作成できたら、その中に以下行を追加して保存。

DATABASE_URL=mysql://管理者ユーザー名:パスワード@localhost/データベース名
※localhostはローカルPCで実行している為

DjangoのDB情報をMysqlに反映させる

プロジェクトフォルダ配下にあるmanage.pyを使って以下コマンドを実行。

python manage.py migrate

管理者用のアカウント作成の為、以下コマンドを実行。

python manage.py createsuperuser

管理画面が見れるか動作確認

無事にmysql接続ができているか、上記のコマンドが実行できれば確認できたようなものですがせっかくなので管理画面を見てみましょう。上のコマンドで作成した管理者ユーザーの情報を入れたら管理サイトに入る事ができました。

Comments are closed

Latest Comments

No comments to show.