ConohaDBとDjangoを接続する方法

django conoha db

Djangoを使っていてSQLite以外のDBを使いたいことがありますよね。

そこで今日はConohaDBとDjangoを接続する方法を紹介します。

ConohaDBとDjangoを接続するために用意するもの

Djangoプロジェクト(ここではすでにDjangoプロジェクトが作成されているものとして話を進めていきます。

Conohaのアカウント(当然ながらConohaのアカウントは作成しておいてください。)

Conoha DBの設定

  1. 左上のサーバー追加をクリック
  2. DBサーバーのタブを選択(リージョンはもちろん東京)人によりますが…
  3. サービスは一番安い500円を選択(500円でDBサーバーの面倒を見てもらえると思ったら安い!!これでデータが突然消える心配は激減)
  4. ネームタグはサーバーに名前をつけます。(1つのサーバー内にいくつもデーターベースを作れるのでサービス名にすると後で後悔するかも)
  5. 自動バックアップはしてくれると安心ですが今回は最安値で「無効」を選択
  6. 最後に追加を押せばサーバーが起動します。ConoHaコントロールパネル

サーバーリストから今作成したサーバーを選択します。

この記事を書くためにわざわざサーバーを起動しました。でも、1時間毎の支払いなので数円で済みます。(削除し忘れなければ!)

ConoHaコントロールパネル2

データベース名をクリックすると接続先ホスト名が確認できます。DjangoでDBの接続先の設定を行う問いに必要なので グローバールネットワーク を控えます。

ConoHaコントロールパネル7

DBの設定であとやることは3つです。

  1. データベースを作成
  2. ユーザーを作成
  3. DBとユーザーをつなぐ

ConoHaコントロールパネル3

データベース名を入力します。ここはサービス名をつければOK。保存をクリックしてからユーザーの作成に進みます。

ConoHaコントロールパネル4

ユーザー名とパスワードを入力します。パスワードは9文字以上です。

接続許可ホストはどこからでもアクセスできるようにするなら「%」を入力します。

セキュリティー的にはサーバーのIPアドレスと開発環境のIPアドレスを入力するのが安全です。IPの確認はこのサイトかターミナルでifconfigで確認します。

設定が済んだら保存します。

ConoHaコントロールパネル5

ユーザーの作成ができたら右下の工具のボタンを押します。

すると接続先データベースを選択する画面が出てくるので先ほど作成したDBを選択します。

せっかちな私はこの設定をせずにDjangoからDBに接続しようとして access denied (アクセスできません)と言われて数分悩みました。

ConoHaコントロールパネル6

 

これでConoha DBの設定は終わりです!

  1. サーバーを立てる
  2. DBを作成する
  3. ユーザーを作成する
  4. DBとユーザーをつなぐ

の4ステップで簡単ですね。

 

Djangoの設定(python3)

PyMySQLをインストール

DjangoでMysqlを利用するにはPyMySQLをインストールします。

ターミナルで下記を実行します。

[code]pip install PyMySQL[/code]

昔はmysqlclient というのがあったのですが、これはPython3に対応していないのでインストールしようとするとエラーが出ます。一瞬インストールできたことがあったのですが、サーバーでインストールしようと思ったらエラーの連発で結局Mysqlを諦めてPostgreを使ったという残念な過去があります。

皆さんはそんなことをしなくても PyMySQL を使えばDjango×Python3で普通にMysqlが使えます。

Djangoのsettings.pyをConoha DBに切り替え

Djangoプロジェクト直下にあるsettings.pyのDBの設定をコメントアウトします。

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

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

import pymysql
pymysql.install_as_MySQLdb()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'データベース名',
'USER': 'ユーザー名',
'PASSWORD': 'パスワード',
'HOST': '接続先ホスト名',
'PORT': '3306',
}
}

そして、先ほどConohaで設定した情報を入力すればOKです。これでConohaのサーバーにDjangoから接続ができました。

 

最後に本当につながっているか確認が必要なのでDjangoプロジェクトのホームディレクトリに移動して

python manage.py migrate

を実行してサーバー内にテーブルが作成されれば完成です!

すっごい簡単なことですが文章で書くとなかなか大変ですね…

再現性重視なので丁寧に書きました。誰かのお役に立てれば幸いです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください