概要
Flaskのチュートリアルをやってみて、
DBはMySQLがいいよう。(´・ω・` ) みたいな人がいてさらに
GUIでテーブルを確認したいよう(´・ω・` ) ってなってたから
DockerのMySQLコンテナを簡易に立ててSequel Proで接続するまでをやります。
動作確認した環境
- OSX 10.11
- Docker for mac 17.06
- Python 2.7.10
- pip 9.0.1
- Sequel Pro 1.1.2
前提
Flaskのチュートリアルをやります。
以下のサイトのSTEP0からSTEP3までが終わっている状態です。
$ tree
├── flaskr
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── config.py
│ ├── config.pyc
│ ├── flaskr.db
│ ├── models.py
│ ├── models.pyc
│ ├── static
│ │ └── style.css
│ ├── templates
│ │ ├── layout.html
│ │ └── show_entries.html
│ ├── views.py
│ └── views.pyc
├── manage.py
└── requirements.txt
MySQLコンテナを立てる
mysqlのrootパスワードを MYSQL_ROOT_PASSWORD
という環境変数に設定してください。
後で使います。
Mac側から接続できるようにポート番号 3306
をつないでおきます。
docker run -d -e MYSQL_ROOT_PASSWORD=your_root_password -p 3306:3306 mysql:5.7
Sequel Proを使用する
GUIで見た方がわかりやすいので、今回はSequel Proという
データベースクライアントソフトを使います。
起動すると、接続ウィンドウが開くと思うので、以下を入力します。
- 名前: 好きな名前
- ホスト:
0.0.0.0
- ユーザ名:
root
- パスワード: 先ほど
MYSQL_ROOT_PASSWORD
に設定した値 - データベース: 空白
- ポート:
3306
(空白でOK)
下のように接続できて何もない画面に進めばOK
次にデータベースを作成します。
上のメニューから データベース -> データベースを追加
データベースの名前とエンコードを入力してデータベースを作ります。
今回はデータベース名を「testdb」 エンコードを 「UTF-8」 に設定しました。
さらに、テーブルを作成します。
チュートリアルで作った掲示板のようなサービスをMySQLで動かすためには、
Flaskアプリケーションで指定されるテーブルを追加しておく必要があります。
では、画面一番左下の + ボタンを押して、テーブルを作成します。
名前を entries に設定します。
間違えると、テーブルが見つからずエラーになります。
また、構造のタブで、
- title [VERCHAR] [長さ:255]
- text [TEXT]
を設定します。
以下のようになればOKです。
これでデータベースの準備ができました。
MySQLに接続する
ここからはまたFlaskに戻ります。
MySQLに接続するためには PyMySQL
をインストールする必要があります。
以下のコマンドを実行します。
$ sudo pip install PyMySQL
次にMySQLを使用するように flaskr/config.py
を変更します。
SQLALCHEMY_DATABASE_URI
に
mysql+pymysql://[ユーザ名]:[パスワード]@[ホスト]/[DB名]
となるように
設定します。また、 SECRET_KEY
も相変わらず適当な文字列を設定しておく必要があります。
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:your_root_password@0.0.0.0/testdb'
SECRET_KEY = 'XXXXXXXXXXXXXXXXXX'
これで python manage.py
を実行し、アプリケーションを動かします。
投稿したデータがSequel Pro上で確認できるところまでいけば
成功ですヾ( ゚д゚)人( ゚д゚)ノ゙