【发布时间】:2020-12-13 17:34:03
【问题描述】:
我一直在使用 Flask 制作 api,它接收带有参数(luid)的 HTTP 请求,获取参数并将它们传递给 SQL 语句中的 Bigquery,如果 luid 的记录在 cv_date 列中有数据,则返回 True。但是,当我尝试使用实际存在于 BigQuery 表中但不存在于其中的 luid 向此 api 发送请求时,我从他们俩那里接受了 True 。如果它采用 BigQuery 中不存在的 luid 参数,我想让它返回 False 。似乎尝试和异常不能很好地工作。谁能给我个主意??我很抱歉我糟糕的代码。如果缺少任何信息,请告诉我。非常感谢。
此外,我已经设置了 export GOOGLE_APPLICATION_CREDENTIALS = Json.file 并将 IAM 分配给此服务帐户。我通过 gcloud app logs tail -s test 成功将 SQL 发送到 BigQuery。
我提到的网站在下面https://blog.morizyun.com/python/library-bigquery-google-cloud.html Receive HTTP request with Variable, Query BQ and Return Response
/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()
BigQuery
luid | pgid | cv_date | orderid
Uxxxx| 1111 | 2020-08-01| 2222 if this luid, it returns True
Uxxxx| 2222 | | if this luid, it returns False
【问题讨论】:
-
@Soumendra Mishra 谢谢。我对其进行了编辑并使其更加清晰。
标签: python-3.x google-app-engine flask google-bigquery