dayjournal memo

Total 992 articles!!

Flask #003 - SQLiteとPeeweeでクエリストリングでAPI配信

Yasunori Kirimoto's avatar

画像


画像


画像



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取得。

画像



book

Q&A