どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

Flaskでrest apiを作ってみる(MySQLへ接続する)

f:id:nogawanogawa:20190326203754p:plain

この前はFlaskで簡単なREST APIを作ってみました。

nogawanogawa.hatenablog.com

今回は、少しだけ頑張ってFlaskエンドポイント経由でDBへ接続できるようにしてみます。

環境構築

前回は環境構築をさぼってしまったので、今回はちゃんとDockerでやります。

イメージはこんな感じです。

f:id:nogawanogawa:20190331183207j:plain:w500

前回同様REST APIサーバーをFlaskで構築し、MySQLのデータを加工してお繰り返したいと思います。

Flask

こんな感じですかね?

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y python3
RUN apt-get install -y python3-pip
RUN apt-get install -y emacs

RUN pip3 install flask
RUN pip3 install --upgrade flask

ENV APP_PATH=/home
WORKDIR $APP_PATH
ENV HOME $APP_PATH

CMD [ "/bin/sh" ]

MySQL

基本的にこちらを参考にさせていただきました。

qiita.com

まずフォルダ構成はこんな感じ。

MySQL/
├── docker-compose.yml
└── mysql
    ├── Dockerfile
    ├── conf.d
    │   └── my.cnf
    └── initdb.d
        ├── schema.sql
        └── testdata.sql

Dockerfileはこんな感じ。

FROM mysql:latest

あとは上の記事通りにやったら動作は確認できました。

MySQLへの接続

具体的なFlaskの中身になります。

前回に習って、こんな感じになりました。 とりあえずつながればいいので、select_allだけ作ってみました。

やってみた

実際にやってみるとこんな感じです。

起動

FLASK_APP=server.py flask run

アクセスするとこんな感じ。

~ $curl 127.0.0.1:5000/
{"results":[{"index":1,"mail":"xxxx@mail.co.jp","name":"TOM"}]}

ちゃんとMySQLの中身が確認できました。

感想

環境構築とかに意外と時間かかってしまいましたが、普通に動いてよかったです。