Python Code Notes

Information by python engineer

【django】herokuからMySQLを使用する方法【Python】

f:id:vigilantPotato:20210810151507p:plain
heroku上でMySQLを使用するための各設定方法を整理した。heroku上へのデプロイ、MySQL サーバーとWorkbnchのインストールが完了していることが前提。ローカル環境でMySQLを使用する方法は、以下の記事を参照。



【スポンサーリンク】


ClearDB MySQLの追加

heroku上でMySQLを使用するためには、ClearDB MySQLアドオンを追加する必要がある。

herokuの管理画面からConfigure Add-onsをクリックする。

f:id:vigilantPotato:20210921000945p:plain

検索バーにclardbと入力すると、選択肢にClearDB MySQLが表示されるので、それを選択する。

f:id:vigilantPotato:20210921001000p:plain

Plan nameがIgnite - Free(無料)であることを確認し、Submit Order Formをクリックする。

f:id:vigilantPotato:20210921001548p:plain

Installed add-onsにClearDB MySQLが追加されたことを確認する。

f:id:vigilantPotato:20210921001708p:plain

[↑ 目次へ]


settings.pyの修正

settings.pyを修正し、データベースの接続情報を記載していく。事前にdotenvモジュールをインストールしておく。dotenvの基本的な使い方は、こちらを参照。

最初に、接続情報を環境変数から読み込むために、dotenvモジュールをインポートし、環境変数をロードするための記述を追加する。

from dotenv import load_dotenv
load_dotenv()

次に、データベースの設定部を以下の通りに修正する。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.environ.get('DATABASE_NAME'),
        'USER':  os.environ.get('DATABASE_USER'),
        'PASSWORD': os.environ.get('DATABASE_PASSWORD'),
        'HOST':  os.environ.get('DATABASE_HOST'),
    }
}

これによって、heroku上で設定する各環境変数が自動で読み込まれるようになる。

[↑ 目次へ]


【スポンサーリンク】


環境変数の設定

herokuの管理画面から、環境変数を設定していく。

settingsボタンをクリックする。

f:id:vigilantPotato:20210921002155p:plain

Reveal Config Varsをクリックし、環境変数一覧を表示させる。(コマンドプロンプトでheroku configを実行しても環境変数一覧を取得できる。)

f:id:vigilantPotato:20210921002223p:plain

CLEARDB_DATABASE_URLに設定されている値をコピーし、メモ帳等に貼り付けておく。

f:id:vigilantPotato:20210923074448p:plain

mysql://b6908a9b6cd274:7677ab46@us-cdbr-east-04.cleardb.com/heroku_7df9e1c69165e8a?reconnect=true

この文字列の中には、以下の通りユーザー名、パスワード、ホスト、データベース名が含まれており、herokuからデータベースに接続する際に必要となる。

  • データベース名:heroku_7df9e1c69165e8a
  • ユーザー名:b6908a9b6cd274
  • パスワード:7677ab46
  • ホスト:us-cdbr-east-04.cleardb.com

これらの情報をherokuの環境変数に追加し、settings.pyから読み込めるようにする。

f:id:vigilantPotato:20210923073940p:plain

settings.pyで設定したキーと、herokuの環境変数のキーが一致していないと読み込まれないので注意。

[↑ 目次へ]


【スポンサーリンク】


MySQL Workbenchの設定

MySQL Workbenchを起動し、+ボタンをクリックする。

f:id:vigilantPotato:20210923074019p:plain

サーバーの接続情報を入力する。入力する項目及び内容は以下の通り。

  • Connection Name: データベース名
  • Hostname: ホスト
  • Username: ユーザー名
f:id:vigilantPotato:20210923074113p:plain

次に、Store in Vault ...ボタンをクリックする。

f:id:vigilantPotato:20210923075107p:plain

パスワードを入力し、OKボタンを押す。

f:id:vigilantPotato:20210923075140p:plain

Test Connectionボタンを押し、以下の表示が出れば成功。OKボタンを押してWorkbenchを修了させる。

f:id:vigilantPotato:20210923075212p:plain

[↑ 目次へ]


マイグレーション実行

最後に、コマンドプロンプトから、heroku上でマイグレーションを実行すれば準備完了。コマンドは以下の通り。

heroku run python manage.py makemigrations

heroku run python manage.py migrate

[↑ 目次へ]