GAE上でFlaskでapiを開発しております。機能としては
①httpリクエストを取得
②リクエストの中からluidパラメータを取得
③そのluidを使いSQL(Google BigQuery)を実行し、そのluidと同じレコードにあるcv_dateカラムにデータがあればTrue、なければFalseを返す。
④その結果をクライアントに返すといった物です。
そこで、現行のコードをPostman(API開発用アプリ)を使いリクエストを送るとDB上にあるluidとDBに存在しないluidの両方のパラメータでTrueが返ってきます。Try分で条件分岐をさせているつもりなのですが、DBに存在しないluidのパラメーターの際にFalseを返すにはどのように変更するべきかアドバイスを頂きたいです。
基本的なrest_apiの開発だとは思うのですが、思った以上に躓いてしまい、ご質問させて頂いてます。
gcloud app logs tail -s test 結果 "GET /?luidU667xxxxxxxxx HTTP/1.1" 200 2020-08-25 06:09:03 test[20200825t060740] [2020-08-25 06:09:03 +0000] [8] [INFO] Starting gunicorn 20.0.4 2020-08-25 06:09:03 test[20200825t060740] [2020-08-25 06:09:03 +0000] [8] [INFO] Listening at: http://0.0.0.0:8081 (8) 2020-08-25 06:09:03 test[20200825t060740] [2020-08-25 06:09:03 +0000] [8] [INFO] Using worker: sync 2020-08-25 06:09:03 test[20200825t060740] [2020-08-25 06:09:03 +0000] [14] [INFO] Booting worker with pid: 14
/home/user/api_dev/main.py from flask import Flask, request from google.cloud import bigquery app = Flask(__name__) @app.route('/') def get_request(): # luid = request.args.get('luid') or '' client = bigquery.Client() query = """SELECT EXISTS(SELECT cv_date FROM `test-266110.conversion_log.conversion_log_2020*` WHERE luid = `test-266110.conversion_log.conversion_log_2020*`.luid limit 1000)""" try: query_job = client.query(query) is_exist = len(list(query_job.result())) >= 1 return "True" except: return "False" if __name__ == "__main__": app.run()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/26 01:13