Djangoを使っていてSQLite以外のDBを使いたいことがありますよね。
そこで今日はConohaDBとDjangoを接続する方法を紹介します。
ConohaDBとDjangoを接続するために用意するもの
Djangoプロジェクト(ここではすでにDjangoプロジェクトが作成されているものとして話を進めていきます。
Conohaのアカウント(当然ながらConohaのアカウントは作成しておいてください。)
Conoha DBの設定
- 左上のサーバー追加をクリック
- DBサーバーのタブを選択(リージョンはもちろん東京)人によりますが…
- サービスは一番安い500円を選択(500円でDBサーバーの面倒を見てもらえると思ったら安い!!これでデータが突然消える心配は激減)
- ネームタグはサーバーに名前をつけます。(1つのサーバー内にいくつもデーターベースを作れるのでサービス名にすると後で後悔するかも)
- 自動バックアップはしてくれると安心ですが今回は最安値で「無効」を選択
- 最後に追加を押せばサーバーが起動します。
サーバーリストから今作成したサーバーを選択します。
この記事を書くためにわざわざサーバーを起動しました。でも、1時間毎の支払いなので数円で済みます。(削除し忘れなければ!)
データベース名をクリックすると接続先ホスト名が確認できます。DjangoでDBの接続先の設定を行う問いに必要なので グローバールネットワーク を控えます。
DBの設定であとやることは3つです。
- データベースを作成
- ユーザーを作成
- DBとユーザーをつなぐ
データベース名を入力します。ここはサービス名をつければOK。保存をクリックしてからユーザーの作成に進みます。
ユーザー名とパスワードを入力します。パスワードは9文字以上です。
接続許可ホストはどこからでもアクセスできるようにするなら「%」を入力します。
セキュリティー的にはサーバーのIPアドレスと開発環境のIPアドレスを入力するのが安全です。IPの確認はこのサイトかターミナルでifconfigで確認します。
設定が済んだら保存します。
ユーザーの作成ができたら右下の工具のボタンを押します。
すると接続先データベースを選択する画面が出てくるので先ほど作成したDBを選択します。
せっかちな私はこの設定をせずにDjangoからDBに接続しようとして access denied (アクセスできません)と言われて数分悩みました。
これでConoha DBの設定は終わりです!
- サーバーを立てる
- DBを作成する
- ユーザーを作成する
- 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
を実行してサーバー内にテーブルが作成されれば完成です!
すっごい簡単なことですが文章で書くとなかなか大変ですね…
再現性重視なので丁寧に書きました。誰かのお役に立てれば幸いです。
コメントを残す