現在以下のことを実行したく、トライアンドエラーを繰り返してます。
1、GETパラメーターから取得するluid:Uxxxxxxの値を変数に格納
2、その変数をSQLのwhere区で使用して、その動的に取得したluidと一致するデータをDBから取得する
調べてはみた所、変数に静的に値を指定して、それを使う方法はあるようなのですが、リクエストURLにあるパラメーターの値を使ってのSQLの書き方などがあればご教授頂きたいです。よろしくお願いします。
request_luidの中身はreturn request_luidでリクエストパラメーターの値が入っていることを確認できています。
また、BigQueryのコンソール画面からこちらのファイルから投げられたSQLの履歴を見ると
where区以下の動的変数で扱いたいrequest_luidがそのまま静的な文字として伝わっていました。
query = """SELECT EXISTS(SELECT 1 FROM `test-266778.conversion_log.conversion_log_2020*` as p WHERE request_luid = p.luid AND orderid != '' limit 1000)""" ↑ ここが静的な変数名で伝わっている
/home/user/api_dev/main.py from flask import Flask, request, jsonify from google.cloud import bigquery app = Flask(__name__) @app.route('/') def get_request(): request_luid = request.args.get('luid') or '' client = bigquery.Client() query = """SELECT EXISTS(SELECT 1 FROM `test-266778.conversion_log.conversion_log_2020*` as p WHERE @request_luid = p.luid AND orderid != '' limit 1000)""" job_config = bigquery.QueryJobConfig( query_parameters=[ bigquery.ScalarQueryParameter("request_luid", "STRING", request_luid) ] ) query_job = client.query(query) query_res = query_job.result() for row in query_res: return jsonify({request_luid:query_res.total_rows}) if __name__ == "__main__": app.run()
回答2件
あなたの回答
tips
プレビュー