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