FlaskからJSONを返却

今回は、Flaskを使ってJSON形式での返却を検証します。

目次

はじめに

今回の検証は、Flaskを使ってPostgreSQLからデータを取得しJSON形式で返却します。

PostgreSQL上へのデータ投入などは、前回の記事に書いてありますので、必要な方は参照してください。

今回の検証環境は以下となります。

  • PC:Mac mini(M1 ,2020)
  • OS:macOS Monterey バージョン12.0.1
  • Python:3.9.9
  • Flask:2.0.2
  • psycopg2:2.9.3
  • Docker:20.10.8
  • PostgreSQL:13.3(Dockerコンテナ)

コード作成・検証

今回作成したPythonコードは以下となります。

from flask import Flask, jsonify
import psycopg2
import psycopg2.extras

app = Flask(__name__)

@app.route('/')
def pgjson():

    # Create connection.
    conn = psycopg2.connect(
        host='localhost', 
        port=15432,
        database='takamoto', 
        user='keiji', 
        password='keiji',
    )

    # Create cursor and close.
    cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
    cur.execute('select * from covid19')
    ds = cur.fetchall()
    cur.close()

    # Close connection.
    conn.close()

    # Convert dictionary with column name.
    dictds = []
    for row in ds:
        dictds.append(dict(row))

    #return name
    return jsonify({'status':'OK' ,'dataset':dictds})

app.run(port=8888 ,debug=True)

なお、今回はJSON形式で直接返却しますのでテンプレートは使っていません。

コード作成上ポイントを以下に示します。

  • flaskのjsonifyをインポート(1行目)
  • データベースから取得した二次元配列を辞書型の配列に変換(29〜31行目)
  • URLリクエストの返却時にjsonifyにて返却内容を辞書型で返却(34行目)

ブラウザからの表示結果(http://localhost:8888)は以下となります。

表示結果

まとめ

今回は、FlaskからPostgreSQLのデータを取得しJSON形式で返却するプログラムを作成しました。

次回は、もう少しだけRESTっぽくGETパラメータを取得してフィルターする方法を説明します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次