python: DBに接続するWebAPIを自作する

プログラミング
スポンサーリンク




こんにちは、Eviです。

今回は、pythonでMySQLに接続し、SQL文の結果をJSON形式で返却するWebAPIをFlaskで自作したいと思います。

スポンサーリンク

環境

  • macOS: 10.15.4
  • python: 3.7.4

必要なライブラリ

  • Flask
  • sqlalchemy
  • mysql-connector-python

pip等でインストールしてください。

MySQLの導入方法、sqlalchemyの使用法は割愛します。

ソースコード

# -----------------------------------------------
# 必要なモジュールをインポート
# -----------------------------------------------
import sqlalchemy.ext.declarative
import sqlalchemy.orm
from flask import Flask, session, jsonify

# -----------------------------------------------
# 処理を定義
# -----------------------------------------------
# Flaskインスタンスの生成
app = Flask(__name__)

# jsonifyで日本語が文字化けしないようにする
app.config['JSON_AS_ASCII'] = False

# エンジンの生成(ユーザーはroot...初期ユーザーでログインし、test_dbに接続する)
engine = sqlalchemy.create_engine("mysql+pymysql://root:@127.0.0.1/test_db")

# メタクラスの生成
Base = sqlalchemy.ext.declarative.declarative_base()


# メタクラスを継承し、テーブル情報を定義したクラスの生成
class Tasks(Base):
    __tablename__ = "tasks"
    id = sqlalchemy.Column(
        sqlalchemy.Integer, primary_key=True, autoincrement=True
    )

    name = sqlalchemy.Column(
        sqlalchemy.String(30)
    )


# 定義したテーブル情報をDBと紐付ける(紐づくテーブルがない場合、生成される。)
Base.metadata.create_all(engine)

# DB内にアクセスするするためのオブジェクト(session)を生成
Session = sqlalchemy.orm.sessionmaker(bind=engine)
session = Session()


# URL = http://127.0.0.1:5000/get
@app.route('/get', methods=["GET", "POST"])
def get():
    # Taskテーブルのデータ一覧を返す
    tasks = session.query(Tasks).all()

    # 辞書を生成
    task_dict = []

    # 辞書にデータを格納
    for task in tasks:
    task_dict.append({"id": str(task.id), "name": task.name})

    # jsonに変換した結果を返す
    return jsonify(task_dict)


# 主処理
if __name__ == "__main__":
    # 起動
    app.run(debug=True)

mysqlのユーザー情報や、DB名、テーブル名は適宜自分用に読み替えてください。

実行後、http://127.0.0.1:5000/getにアクセスするとtaskテーブルのデータ一覧がJSON形式で返却されます。

オススメの書籍

Pythonフレームワーク Flaskで学ぶWebアプリケーションのしくみとつくり方

webアプリケーションの開発に必要な、

  • サーバサイドの開発技術
  • フロントエンドの開発技術
  • データベース技術

を学ぶ事ができ、開発を行うために必要な知識を一通り手に入れる事ができます。

ソシムの書籍はどれも初心者にわかりやすく書かれているのでお勧めの1冊です。

コメント

  1. […] python: DBに接続するWebAPIを自作するこんにちは、Eviです。今回は、pythonでMyS… […]

タイトルとURLをコピーしました