DjangoからPostgresqlがどうしてもwin7だと接続できなくて、もしやと思い他のPCでインストールしたらあっさり接続。相性悪いのかしら。諦めてXAMPPで入れてるmysqlにつないだらあっさり接続。本番環境どのDBかまだわからないし、しばらくはmysqlで進めることにします。 #mysql #django
— 世界のアオキ@子供心で遊ぶプログラミングと創造的思考力を (@aoki_tashipro) 2018年10月17日
DjangoからPostgresqlがどうしてもwin7だと接続できなくて、もしやと思い他のPCでインストールしたらあっさり接続。相性悪いのかしら。諦めてXAMPPで入れてるmysqlにつないだらあっさり接続。本番環境どのDBかまだわからないし、しばらくはmysqlで進めることにします。 #mysql #django
Heroku(ヘロク)用にPostgresql(ポストグレエスキューエル)で進めようとしていたんだけれどまったく接続できず、
気持ち切り替えてmysql(マイエスキューエル)に繋いだらあまりにあっさり繋がって拍子抜けした話です。
環境
python 3.6.4
django 2.1.2
PyMySQL 0.9.2
Djangoとmysqlを接続してみる
mysqlと繋げるためのテスト用としてDjangoフォルダを作ってみます。
mkdir mysql-test #テスト用にフォルダ作成
cd mysql-test #フォルダの中に入って
python -m venv venv #pythonプロジェクトお約束の仮想環境つくって
source venv/bin/activate #仮想環境有効化
ちなみに仮想環境有効化はwindowsの場合
venv/Scripts/activate #仮想環境有効化
で仮想環境モードになるようです。
仮想環境に入った状態で、
pip install PyMySQL #mysqlと接続するためのライブラリ
でライブラリをインストールしてMysqlと繋げる準備をしつつ、
django-admin startproject config . #Djangoプロジェクト作成 (テスト用)
でDjangoプロジェクトフォルダを作成します。
生成されたDjango側のmanage.pyの中に、
import pymysql
pymysql.install_as_MySQLdb()
と追記して、
Django側のconfig/settings.pyの中に、mysqlと繋げるための情報をこんな感じで追記します。
今回はずっと前にパソコンにインストールしていたXAMPP(ザンプ)のmysqlに接続するので、
XAMPP内のapacheとmysqlをスタートさせて。
XAMPP(ザンプ)・・個人パソコンにサーバー機能をインストールできる便利ツール。
サーバー(Apache(アパッチ))やデータベース(mysql)などをまとめてインストールできる)
mysqlの状態をウェブ上で見れることでおなじみの 『phpMyAdmin(ピーエイチピーマイアドミン)』を開いて、
先ほどの例だとsample データベースを作っておいて。
Djangoはプロジェクトを作った段階でログイン用のデータベース情報(マイグレーションファイル)を作成しているので、
おまじないコマンドをたたいてみます。
python manage.py migrate #プログラムで書いてある情報をデータベース用に変換して登録
無事につながればこれらのテーブルが生成されます。
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
phpMyAdmin側を再読み込みしてみると、しっかりテーブル作成されてます。
おもむろに djangoを立ち上げる魔法のコマンド
python manage.py runserver
を起動すると、こちらもあっさり動いて。
的な心境になってしまいました。
動いたからいいんだけどね・・
おわりに
Postgresqlはとっても便利なwindow関数が使えたりして、
ビッグデータ時代に人気がでているようですが、
ポートを開けてもファイアウォールを切っても設定ファイルを変えても繋がらないような場合には、
WordPress(ワードプレス)で一気に有名になったブロガー御用達のmysql(マイエスキューエル)を素直に使うでもいいんじゃないかなと思います。
DjangoにはO/Rマッパーもあるので、おいおい別のデータベースに変わったとしてもだいたい大丈夫のはず。
O/Rマッパー・・Pythonでかけるデータベース接続用のツール。mysqlでもpostgresqlでも同じように使える。
1日がかりでしっかり悩んで試して、それでもダメならスッパリ諦めて次の手を探す、ということも大事なのかもしれませんね。
参考記事
Python3系でDjangoでMySQLに接続する
『Python』関連ではこんな記事も読まれています。
1. 【Python】手軽に試す方法2つとwebフレームワークについて【初心者向け】2. 【Python(パイソン)】でできる事の実例 じゃらんや楽天トラベルからデータをとってゴニョゴニョできちゃうんです
3. 【Python(パイソン)】でホームページをつくった時の話【Flask/Vagrant/Heroku】
4. 【Python】Flaskのチュートリアルがもっとわかるようになるまとめ【初心者向け】
5. 【Python】用語集まとめてみた。~Webサービスをつくりたい人向け~【初心者向け】※随時更新中
6. 【Python】でWebアプリをがっつりやるならDjango一択な4つの理由【初心者向け】
7. 【Python/Django】Webアプリのテンプレートなら『cookiecutter』がよさげ【簡単で安心】
8. 【Python/Django】mysqlとの接続があまりにあっさりしすぎて拍子抜けした話
9. 【Python/Django】webフレームワークを使う6つのコツ〜最短距離でアプリをつくるために【初心者向け】
10. 【Django】Webアプリのフォルダ構成のアイデア〜違うアプリで同じテーブルを使いたい!
11. 【Django】【Laravel】【RubyOnRails】を比較してみた【初心者向け】【体験談】
アオキのツイッターアカウント。