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パラメータを取得してフィルターする方法を説明します。
コメント