SQLiteとPeeweeでクエリストリングでAPI配信するメモ。
サンプルのSQLiteを準備しておきます。
script.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#モジュールインポート
from flask import Flask, jsonify, abort, make_response, request
from peewee import *
import urllib.request
import urllib.parse
#SQLite読み込み
database = SqliteDatabase("db.sqlite")
#ベースModel作成
class BaseModel(Model):
class Meta:
database = database
#UserテーブルのModel作成
class User(BaseModel):
m_Key = TextField()
m_Name = TextField()
#flaskのインスタンス作成
app = Flask(__name__)
#日本語表示対応
app.config['JSON_AS_ASCII'] = False
#JSON取得処理
@app.route('/api', methods=['GET'])
def get_m():
#URLのKeyとDBのKeyを比較
try:
#クエリパラメータを設定
m_Key = request.args.get('m_key', default = "", type = str)
master = User.get(User.m_Key == m_Key)
except User.DoesNotExist:
abort(404)
#URLのKeyとDBのKeyが一致したJSON作成
result = {
"data":{
"m_Key":master.m_Key,
"m_Name":master.m_Name
},
"result":True
}
#JSONを出力
return make_response(jsonify(result))
#エラー処理
@app.errorhandler(404)
def not_found(error):
#エラーJSON作成
result = {
"error": "存在しません。",
"result":False
}
#エラーJSONを出力
return make_response(jsonify(result), 404)
#app実行
if __name__ == '__main__':
app.run()
対象ディレクトリでコマンド実行。
python script.py
「127.0.0.1:5000/api?m_key=B1」でアクセスするとJSON取得。
適当なアドレスを入れるとエラーJSON取得。