def execute_query( db_session: pg8000.Connection, type_object: typing.Type, sql_file: str, args: any = None, msg_id: str = None, ) -> list: """ With a given sql_file and arguments sequentially ordered according to the sql_file, this function will execute a query to the database and return a list of objects of type_object :param db_session: :param type_object: :param sql_file: :param args: :param msg_id: :return: """ try: file = open(sql_file, "r") query = file.read() file.close() cursor = db_session.cursor() return map_results_into_object( cursor=cursor, query=query, args=args, type_object=type_object, ) except pg8000.DatabaseError as e: msg = ( f'{msg_id} ' f'Unexpected error: {e} ' f'for sql file {sql_file} ' f'and args {args}' ) logging.getLogger().error(msg) db_session.rollback() db_session.close() raise DbException except IOError as e: msg = ( f'{msg_id} ' f'Unexpected error: {e} ' f'for sql file {sql_file} ' f'and args {args}' ) logging.getLogger().error(msg) raise IOError
def commit( db_session: pg8000.Connection, msg_id: str = None, ): """ Commits the Database :param db_session: :param msg_id: :return: """ try: db_session.commit() db_session.close() except pg8000.DatabaseError as e: msg = ( f'{msg_id} ' f'Unexpected error: {e} ' f'while trying to do a ' f'db commit' ) logging.getLogger().error(msg) db_session.rollback() db_session.close() raise DbException