前回の投稿の続きになります。
前回投稿
現在開発しているAPIの機能は以下になります。
SQLの実行先のDBはGoogle BigQueryを使用しております。
①複数のレクエストパラメーター(luid)をリストで取得し、ループ処理でそれぞれを変数に格納 ②①の変数をWhere区の条件に使用しSQLを実行する *SQLの内容はリクエストされたluidのcv_dateカラムに値があればTrueを返す ③結果をパラメーター値:真偽値のJson形式でクライアントに返す
そこで、以下のSQLの結果とリクエストパラメーターをリスト化する処理の中で以下のエラーが出ています。
連続した要素はupdateできないよというエラーだと思うのですが、
本来rowをreturn row[0]で返すとTrue又はFalseで結果を取得できているので、何かupdateもしくはjson.dumpの使い方を間違っているのでしょうか??
何かアドバイスがあれば頂ければ幸いです。
よろしくお願いします。
稚拙なコードで理解しにくい所などありましたら申し訳ありません。
又、そもそものロジックなどで修正した方がいい点などがありましたらご教授頂きたいです。
for row in query_res: temp_result = json.dumps({request_luid: str(row[0]) }) break result.update(temp_result) ⇩ ValueError: dictionary update sequence element #0 has length 1; 2 is required
main.py def get_request(): request_luids = request.args.getlist('luid') or '' result = {} for i in range(len(request_luids)): request_luid = str(request_luids[i]) client = bigquery.Client() query = """SELECT EXISTS( SELECT 1 FROM `test-project-281806.hitobito_test.test3` as p WHERE p.luid = '{}' AND p.cv_date IS NOT NULL limit 1000)""".format(request_luid) 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: temp_result = json.dumps({request_luid: str(row[0]) }) break result.update(temp_result) return result if __name__ == "__main__": app.run()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/20 11:27