def lambda_handler(event, context): try: # パラム取得 dated = event["queryStringParameters"]["dated"] # 本日のレース場取得 db_client = dbaccess.Dbaccess() l_d_place = db_client.execute_select(sql.Sql.select_W_PLACE_by_dated, [dated]) # 0件だった場合、スクレイピング → INSERT # 成功した場合、画面表示用にレース場を再セット if len(l_d_place) == 0: flg_scraped_insert = scraped_insert(db_client, dated) if flg_scraped_insert: l_d_place = db_client.execute_select( sql.Sql.select_W_PLACE_by_dated, [dated]) # 0件だった場合、エラー if len(l_d_place) == 0: err_msg = message.Message.err5 raise Exception(err_msg) db_client.commit() # レスポンス return { "headers": { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": "true" }, 'statusCode': 200, 'body': json.dumps({"place": l_d_place}) } except Exception as e: print(str(e)) # レスポンス return { "headers": { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": "true" }, 'statusCode': 400, 'body': json.dumps(str(e)) } finally: del db_client
def lambda_handler(event, context): try: db_client = dbaccess.Dbaccess() # 月次処理ログテーブルから対象レース取得 l_d_target = db_client.execute_select(sql.Sql.select_T_MONTHLY_LOG2, []) for d_target in l_d_target: l_race_key = [d_target["開催日"], d_target["レース場"], d_target["ラウンド"]] # 予測レース情報取得 l_d_race_head = db_client.execute_select( sql.Sql.select_T_RACE_HEAD, l_race_key) l_d_race_info = db_client.execute_select( sql.Sql.select_T_RACE_INFO, l_race_key) # 分析方法をDBから取得 l_d_anaylize_model = db_client.execute_select( sql.Sql.select_M_ANAYLIZE_MODEL, []) # 分析実行 try: for d_anaylize_model in l_d_anaylize_model: anaylize_rule2(d_anaylize_model, db_client, l_d_race_head, l_d_race_info, l_race_key) except Exception as e: print(str(e)) # 月次処理ログテーブルを更新 l_param = [2, None] + l_race_key db_client.execute_update(sql.Sql.update_T_MONTHLY_LOG, l_param) db_client.commit() # レスポンス return {'statusCode': 200, 'body': json.dumps("ok")} except Exception as e: print(str(e)) # レスポンス return {'statusCode': 400, 'body': json.dumps("ng")} finally: del db_client
def lambda_handler(event, context): try: # テーブルデータ再作成 db_client = dbaccess.Dbaccess() db_client.execute_delete(sql.Sql.delete_W_MONTHLY_RACER, []) db_client.execute_insert(sql.Sql.insert_W_MONTHLY_RACER, []) db_client.commit() # レスポンス return {'statusCode': 200, 'body': json.dumps("ok")} except Exception as e: print(str(e)) # レスポンス return {'statusCode': 400, 'body': json.dumps("ng")} finally: del db_client
def lambda_handler(event, context): try: ## 先月の全部の日付を配列に格納する l_dated = [] # 今日を取得 today = datetime.datetime.today() # 当月1日の値を出す thismonth = datetime.datetime(today.year, today.month, 1) # 前月末日の値を出す lastmonth = thismonth + datetime.timedelta(days=-1) # 配列に格納 yyyymm = lastmonth.strftime("%Y-%m-") dd = lastmonth.strftime("%d") for i in range(int(dd)): l_dated.append(yyyymm + ("0"+str(i+1))[-2:]) # 先月の全部の日付をスクレイピング → 開催していたらINSERT db_client = dbaccess.Dbaccess() for dated in l_dated: scraped_insert(db_client, dated) db_client.commit() # レスポンス return { 'statusCode': 200, 'body': json.dumps("ok") } except Exception as e: print(str(e)) # レスポンス return { 'statusCode': 400, 'body': json.dumps("ng") } finally: del db_client
def lambda_handler(event, context): try: # 月次処理対象を取得 db_client = dbaccess.Dbaccess() l_d_target = db_client.execute_select(sql.Sql.select_T_MONTHLY_LOG, []) # 処理対象分ループ for d_target in l_d_target: l_race_key = [d_target["開催日"], d_target["レース場"], d_target["ラウンド"]] print(l_race_key) # スクレイピング → INSERTをし、エラーメッセージ取得 err_msg = scraped_insert_info(db_client, l_race_key) if err_msg == "": err_msg = scraped_insert_result(db_client, l_race_key) if err_msg == "": l_param = [1, None] + l_race_key else: db_client.rollback() l_param = [92, err_msg] + l_race_key else: db_client.rollback() l_param = [91, err_msg] + l_race_key db_client.execute_update(sql.Sql.update_T_MONTHLY_LOG, l_param) # 1処理ずつコミットする db_client.commit() # レスポンス return {'statusCode': 200, 'body': json.dumps("ok")} except Exception as e: print(str(e)) # レスポンス return {'statusCode': 400, 'body': json.dumps("ng")} finally: del db_client
def lambda_handler(event, context): try: # パラム取得 dated = event["queryStringParameters"]["dated"] place = event["queryStringParameters"]["place"] round = event["queryStringParameters"]["round"] l_race_key = [dated, place, round] # レース情報取得(レース当日の情報取得のため、作業用テーブルを検索する) db_client = dbaccess.Dbaccess() l_d_race_head = db_client.execute_select( sql.Sql.select_W_RACE_HEAD_for_view, l_race_key) l_d_race_info = db_client.execute_select( sql.Sql.select_W_RACE_INFO_for_view, l_race_key) # 0件だった場合、試走タイムが出ていなかった場合、DELETE → スクレイピング → INSERT # 成功した場合、画面表示用にレース情報を再セット if check_exist_data(l_d_race_head, l_d_race_info) == False: db_client.execute_delete(sql.Sql.delete_W_RACE_HEAD_by_racekey, l_race_key) db_client.execute_delete(sql.Sql.delete_W_RACE_INFO_by_racekey, l_race_key) flg_scraped_insert = scraped_insert(db_client, l_race_key) if flg_scraped_insert: l_d_race_head = db_client.execute_select( sql.Sql.select_W_RACE_HEAD_for_view, l_race_key) l_d_race_info = db_client.execute_select( sql.Sql.select_W_RACE_INFO_for_view, l_race_key) else: err_msg = message.Message.err2.format(place, round) raise Exception(err_msg) # 0件だった場合、試走タイムが出ていなかった場合、エラー if check_exist_data(l_d_race_head, l_d_race_info) == False: err_msg = message.Message.err3 raise Exception(err_msg) # スクレイピング完了後いったんコミット db_client.commit() # 分析済みレースか確認 l_d_anaylize_result = db_client.execute_select( sql.Sql.select_W_ANAYLIZE_RESULT_RANK_for_view, l_race_key) l_d_anaylize_result_detail = db_client.execute_select( sql.Sql.select_W_ANAYLIZE_RESULT_VALUE_for_view, l_race_key) if len(l_d_anaylize_result) == 0: # 分析方法をDBから取得 l_d_anaylize_model = db_client.execute_select( sql.Sql.select_M_ANAYLIZE_MODEL, []) # 分析実行 try: for d_anaylize_model in l_d_anaylize_model: if d_anaylize_model["アルゴリズム"] == "Union": anaylize_rule1(d_anaylize_model, db_client, l_d_race_head, l_d_race_info, l_race_key) else: anaylize_rule2(d_anaylize_model, db_client, l_d_race_head, l_d_race_info, l_race_key) # 画面表示用に再セット l_d_anaylize_result = db_client.execute_select( sql.Sql.select_W_ANAYLIZE_RESULT_RANK_for_view, l_race_key) l_d_anaylize_result_detail = db_client.execute_select( sql.Sql.select_W_ANAYLIZE_RESULT_VALUE_for_view, l_race_key) except Exception as e: print(str(e)) # 該当する訓練データが存在しないことが原因のExceptionはここで if str(e) == "'競争タイム'": err_msg = message.Message.err8 else: err_msg = message.Message.err4 raise Exception(err_msg) db_client.commit() # レスポンス return { "headers": { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": "true" }, 'statusCode': 200, 'body': json.dumps({ "race_head": l_d_race_head, "race_info": l_d_race_info, "anaylize": l_d_anaylize_result, "anaylize_detail": l_d_anaylize_result_detail }) } except Exception as e: print(str(e)) # レスポンス return { "headers": { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": "true" }, 'statusCode': 400, 'body': json.dumps(str(e)) } finally: del db_client
def lambda_handler(event, context): try: # パラム取得 dated = event["queryStringParameters"]["dated"] place = event["queryStringParameters"]["place"] round = event["queryStringParameters"]["round"] l_race_key = [dated, place, round] # レース情報取得(レース当日の情報取得のため、作業用テーブルを検索する) db_client = dbaccess.Dbaccess() l_d_race_head = db_client.execute_select( sql.Sql.select_W_RACE_HEAD_for_view, l_race_key) l_d_race_info = db_client.execute_select( sql.Sql.select_W_RACE_INFO_for_view, l_race_key) # 0件だった場合、試走タイムが出ていなかった場合、DELETE → スクレイピング → INSERT # 成功した場合、画面表示用にレース情報を再セット if check_exist_data(l_d_race_head, l_d_race_info) == False: db_client.execute_delete(sql.Sql.delete_W_RACE_HEAD_by_racekey, l_race_key) db_client.execute_delete(sql.Sql.delete_W_RACE_INFO_by_racekey, l_race_key) flg_scraped_insert = scraped_insert(db_client, l_race_key) if flg_scraped_insert: l_d_race_head = db_client.execute_select( sql.Sql.select_W_RACE_HEAD_for_view, l_race_key) l_d_race_info = db_client.execute_select( sql.Sql.select_W_RACE_INFO_for_view, l_race_key) # 0件だった場合、エラー(ここでは試走タイム等の情報がなくてもOK) if len(l_d_race_head) == 0 or len(l_d_race_info) == 0: err_msg = message.Message.err2.format(place, round) raise Exception(err_msg) db_client.commit() # レスポンス return { "headers": { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": "true" }, 'statusCode': 200, 'body': json.dumps({ "race_head": l_d_race_head, "race_info": l_d_race_info }) } except Exception as e: print(str(e)) # レスポンス return { "headers": { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": "true" }, 'statusCode': 400, 'body': json.dumps(str(e)) } finally: del db_client