From 8fac8401bfb29fd03402703a359c933c9b5c79f7 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 7 Apr 2023 10:55:59 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=83=AD=E3=82=B0=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=80=81=E4=BE=8B=E5=A4=96=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=82=82=E3=81=A1=E3=82=87=E3=81=A3=E3=81=A8=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py | 6 ++++-- ecs/jskult-batch-daily/src/db/database.py | 9 ++++++--- ecs/jskult-batch-daily/src/error/exceptions.py | 5 ++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py b/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py index 96463ed5..44e53cbc 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py @@ -7,6 +7,7 @@ from src.batch.ultmarc.datfile import DatFile from src.batch.ultmarc.utmp_tables.ultmarc_table_mapper_factory import \ UltmarcTableMapperFactory from src.db.database import Database +from src.error.exceptions import DBException from src.logging.get_logger import get_logger logger = get_logger('アルトマークデータ保管') @@ -21,6 +22,7 @@ def dat_insert_control(): db.connect() # ファイル単位でトランザクションを行う db.begin() + logger.info('Transaction BEGIN') # datファイルをS3から取得する dat_file_list = ultmarc_bucket.list_edi_file() # ファイルがない場合は処理せず、正常終了とする @@ -66,8 +68,7 @@ def dat_insert_control(): # これいる?? if log_count % 5000 == 0: logger.info(f'Count: {log_count}') - except Exception as e: - # TODO: ログちゃんとする + except DBException as e: logger.warning(e) record = line.records log_message = ','.join([f'"{r}"' for r in record]) @@ -75,6 +76,7 @@ def dat_insert_control(): dat_file.count_up_error() # すべての行を登録終えたらコミットする db.commit() + logger.info('Transaction COMMIT') logger.info(f'datInsert RESULT') logger.info(f'SUCCESS_COUNT={dat_file.success_count}') logger.info(f'ERROR_COUNT={dat_file.error_count}') diff --git a/ecs/jskult-batch-daily/src/db/database.py b/ecs/jskult-batch-daily/src/db/database.py index 288fc4ff..59ac0d81 100644 --- a/ecs/jskult-batch-daily/src/db/database.py +++ b/ecs/jskult-batch-daily/src/db/database.py @@ -81,7 +81,10 @@ class Database: Raises: DBException: 接続失敗 """ - self.__connection = self.__engine.connect() + try: + self.__connection = self.__engine.connect() + except Exception as e: + raise DBException(f'SQL Error: {e}') def execute_select(self, select_query: str, parameters=None) -> list[dict]: """SELECTクエリを実行します。 @@ -108,7 +111,7 @@ class Database: # トランザクションが明示的に開始していない場合は、クエリ単位でトランザクションをbegin-commitする。 result = self.__execute_with_transaction(select_query, parameters) except Exception as e: - raise DBException(e) + raise DBException(f'SQL Error: {e}') result_rows = result.mappings().all() return result_rows @@ -138,7 +141,7 @@ class Database: # トランザクションが明示的に開始していない場合は、クエリ単位でトランザクションをbegin-commitする。 result = self.__execute_with_transaction(query, parameters) except Exception as e: - raise DBException(e) + raise DBException(f'SQL Error: {e}') return result diff --git a/ecs/jskult-batch-daily/src/error/exceptions.py b/ecs/jskult-batch-daily/src/error/exceptions.py index 612060c5..c9effa01 100644 --- a/ecs/jskult-batch-daily/src/error/exceptions.py +++ b/ecs/jskult-batch-daily/src/error/exceptions.py @@ -4,11 +4,14 @@ from tenacity import RetryError class MeDaCaException(Exception): pass + class DBException(MeDaCaException): pass + class BatchOperationException(MeDaCaException): pass + class MaxRetryExceededException(MeDaCaException, RetryError): - pass \ No newline at end of file + pass