LoginSignup
4
0

More than 5 years have passed since last update.

FlaskからDockerのMySQLコンテナに接続する

Posted at

概要

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

スクリーンショット 2017-07-09 2.48.02.png

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という
データベースクライアントソフトを使います。

Sequel Pro

起動すると、接続ウィンドウが開くと思うので、以下を入力します。

  • 名前: 好きな名前
  • ホスト: 0.0.0.0
  • ユーザ名: root
  • パスワード: 先ほど MYSQL_ROOT_PASSWORD に設定した値
  • データベース: 空白
  • ポート: 3306 (空白でOK)

下のように接続できて何もない画面に進めばOK

スクリーンショット 2017-07-09 3.03.43.png

次にデータベースを作成します。
上のメニューから データベース -> データベースを追加
データベースの名前とエンコードを入力してデータベースを作ります。
今回はデータベース名を「testdb」 エンコードを 「UTF-8」 に設定しました。

さらに、テーブルを作成します。
チュートリアルで作った掲示板のようなサービスをMySQLで動かすためには、
Flaskアプリケーションで指定されるテーブルを追加しておく必要があります。

では、画面一番左下の + ボタンを押して、テーブルを作成します。
名前を entries に設定します。
間違えると、テーブルが見つからずエラーになります。

また、構造のタブで、

  • title [VERCHAR] [長さ:255]
  • text [TEXT]

を設定します。
以下のようになればOKです。

スクリーンショット 2017-07-09 3.13.04.png

これでデータベースの準備ができました。

MySQLに接続する

ここからはまたFlaskに戻ります。

MySQLに接続するためには PyMySQL をインストールする必要があります。
以下のコマンドを実行します。

$ sudo pip install PyMySQL

次にMySQLを使用するように flaskr/config.py を変更します。
SQLALCHEMY_DATABASE_URI
mysql+pymysql://[ユーザ名]:[パスワード]@[ホスト]/[DB名] となるように
設定します。また、 SECRET_KEY も相変わらず適当な文字列を設定しておく必要があります。

flaskr/config.py
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:your_root_password@0.0.0.0/testdb'
SECRET_KEY = 'XXXXXXXXXXXXXXXXXX'

これで python manage.py を実行し、アプリケーションを動かします。
投稿したデータがSequel Pro上で確認できるところまでいけば
成功ですヾ( ゚д゚)人( ゚д゚)ノ゙

4
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0