家計簿一覧画面(DB処理)
家計簿一覧画面のDB処理
HAB_List_Adapterクラス
概要
HAB_List_Adapterクラスは自作Enginクラスを継承している

家計簿一覧取得
初期表示の場合、操作時の年月
家計簿一覧画面(UI)の一覧変更ボタンを選択した場合、選択した年月
を家計簿一覧画面から受け取り
・受け取った年月の家計簿一覧の取得
・ログ出力
を行う
【ログ出力】
・メソッド開始時とメソッド終了時にlogテーブルに処理内容をINSERTする
・ログ出力時に例外エラーが発生した場合、ログ出力時例外エラー用メッセージを家計簿一覧画面に返却する
log_seq | log_kinds | function_id | log_detail | user_id | operate_at |
1421 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 取得 件 | test01 | 2025-09-06 16:12:39 |
1422 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 取得 0件 | test01 | 2025-09-06 16:12:39 |
1431 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-08 取得 件 | test01 | 2025-09-06 16:16:06 |
1432 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-08 取得 3件 | test01 | 2025-09-06 16:16:06 |
1437 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 取得 件 | test01 | 2025-09-06 16:16:09 |
1438 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 取得 0件 | test01 | 2025-09-06 16:16:09 |
1443 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-10 取得 件 | test01 | 2025-09-06 16:16:10 |
1444 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-10 取得 0件 | test01 | 2025-09-06 16:16:10 |
1449 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2026-11 取得 件 | test01 | 2025-09-06 16:16:17 |
1450 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2026-11 取得 0件 | test01 | 2025-09-06 16:16:17 |
1457 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 取得 件 | test01 | 2025-09-06 16:38:31 |
1458 | W | I-SEL-HAB_DETAIL | AttributeError(“type object ‘HAB_Detail’ has no attribute ‘HAB_seqtest'”) | test01 | 2025-09-06 16:38:31 |
【例外エラー】
ログ出力以外で例外エラーが発生した場合
・例外エラー用メッセージを家計簿一覧画面(UI)に返却する
(例外エラー用メッセージ内容は「家計簿アプリを作成する③【SQLAlchemyのEngineを作成】」のMessageクラスを参照)

【家計簿一覧の取得】
家計簿一覧の取得に成功した場合
取得した家計簿一覧を家計簿一覧画面(UI)に返却する
入出金区分円グラフデータ取得
初期表示の場合、操作時の年月
家計簿一覧画面(UI)の一覧変更ボタンを選択した場合、選択した年月
を家計簿一覧画面から受け取り
・受け取った年月の入出金区分円グラフデータの取得
・ログ出力
を行う
【入出金区分円グラフデータ】
家計簿詳細からマスタに登録されている入出金区分ごとの家計簿一覧の合計値を取得し、家計簿一覧画面(UI)に返却する
【ログ出力】
・メソッド開始時とメソッド終了時にlogテーブルに処理内容をINSERTする
・ログ出力時に例外エラーが発生した場合、ログ出力時例外エラー用メッセージを家計簿一覧画面に返却する
log_seq | log_kinds | function_id | log_detail | user_id | operate_at |
1423 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:12:39 |
1424 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:12:39 |
1433 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-08 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:16:06 |
1434 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-08 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:16:06 |
1439 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:16:09 |
1440 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:16:09 |
1445 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-10 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:16:10 |
1446 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-10 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:16:10 |
1451 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2026-11 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:16:17 |
1452 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2026-11 入出金円グラフデータ 取得 | test01 | 2025-09-06 16:16:17 |
1463 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 入出金円グラフデータ 取得 | test01 | 2025-09-07 14:36:13 |
1464 | W | I-SEL-HAB_DETAIL | AttributeError(“type object ‘Master’ has no attribute ‘m_idtest'”) | test01 | 2025-09-07 14:36:13 |
1647 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 入出金円グラフデータ 取得 | admin | 2025-09-07 16:36:29 |
1648 | E | I-SEL-HAB_DETAIL | 家計簿一覧 master:HAB_kbn 入出金円グラフデータ 取得失敗 | admin | 2025-09-07 16:36:29 |
【例外エラー】
ログ出力以外で例外エラーが発生した場合
・例外エラー用メッセージを家計簿一覧画面(UI)に返却する
(例外エラー用メッセージ内容は「家計簿アプリを作成する③【SQLAlchemyのEngineを作成】」のMessageクラスを参照)

詳細種類円グラフデータ取得
初期表示の場合、操作時の年月
家計簿一覧画面(UI)の一覧変更ボタンを選択した場合、選択した年月
を家計簿一覧画面から受け取り
・受け取った年月の詳細種類円グラフデータの取得
・ログ出力
を行う
【詳細種類円グラフデータ】
家計簿詳細からマスタに登録されている詳細種類ごとの家計簿一覧の合計値を取得し、家計簿一覧画面(UI)に返却する
【ログ出力】
・メソッド開始時とメソッド終了時にlogテーブルに処理内容をINSERTする
・ログ出力時に例外エラーが発生した場合、ログ出力時例外エラー用メッセージを家計簿一覧画面に返却する
log_seq | log_kinds | function_id | log_detail | user_id | operate_at |
1471 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:23:57 |
1472 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:23:57 |
1481 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-08 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:24:00 |
1482 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-08 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:24:00 |
1487 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:24:01 |
1488 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:24:01 |
1493 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-10 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:24:02 |
1494 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-10 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:24:02 |
1499 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2026-10 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:24:12 |
1500 | E | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2026-10 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:24:12 |
1509 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 15:29:50 |
1510 | W | I-SEL-HAB_DETAIL | AttributeError(“type object ‘Master’ has no attribute ‘m_idtest'”) | test01 | 2025-09-07 15:29:50 |
1655 | S | I-SEL-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09 詳細種類円グラフデータ 取得 | test01 | 2025-09-07 17:20:10 |
1656 | E | I-SEL-HAB_DETAIL | 家計簿一覧 master:HABkinds 詳細種類円グラフデータ 取得失敗 | test01 | 2025-09-07 17:20:10 |
【例外エラー】
ログ出力以外で例外エラーが発生した場合
・例外エラー用メッセージを家計簿一覧画面(UI)に返却する
(例外エラー用メッセージ内容は「家計簿アプリを作成する③【SQLAlchemyのEngineを作成】」のMessageクラスを参照)

家計簿登録
家計簿詳細を家計簿一覧画面(UI)から受け取り
・受け取った家計簿詳細の新規登録
・ログ出力
を行う
【家計簿詳細の新規登録】
家計簿一覧画面(UI)から受け取った新規登録の行データを家計簿詳細に登録する
HAB_seq | HAB_kbn | HAB_at | amount | HABkinds | HABdetail | del_flg | entry_user_id | entry_at | update_user_id | update_at | update_version |
20 | in | 2025-09-10 0:00:00 | 10000 | 4 | 8月分給与 | 0 | test01 | 2025-09-10 21:31:51 | NULL | NULL | 0 |
21 | out | 2025-09-09 1:02:00 | 1000 | 1 | 昼食 | 0 | test01 | 2025-09-10 21:32:29 | NULL | NULL | 0 |
【ログ出力】
・メソッド開始時とメソッド終了時にlogテーブルに処理内容をINSERTする
・ログ出力時に例外エラーが発生した場合、ログ出力時例外エラー用メッセージを家計簿一覧画面に返却する
log_seq | log_kinds | function_id | log_detail | user_id | operate_at |
1661 | S | I-INS-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09-10 00:00 追加 | test01 | 2025-09-10 21:31:51 |
1662 | E | I-INS-HAB_DETAIL | 家計簿一覧 HAB_detail:2025-09-10 00:00 追加 | test01 | 2025-09-10 21:31:51 |
【例外エラー】
ログ出力以外で例外エラーが発生した場合
・例外エラー用メッセージを家計簿一覧画面(UI)に返却する
(例外エラー用メッセージ内容は「家計簿アプリを作成する③【SQLAlchemyのEngineを作成】」のMessageクラスを参照)

ソースコード
from sqlalchemy import select, and_, func, case
from sqlalchemy.orm import aliased
from db.models import HAB_Detail, Master
from db.common.engine import Engine, Return_Info
# 家計簿詳細テーブル接続
class HAB_List_Adapter(Engine):
def __init__(self):
super().__init__()
# 画面名を設定
self.display_name = self.const.Display.HAB_LIST # 家計簿一覧
# 家計簿一覧取得
def fill_HAB_list(self, arg_where_year_month, arg_user_id):
"""
家計簿一覧を取得する
引数
arg_where_year_month:検索条件
arg_user_id:操作ユーザー
"""
# 返却用クラスをインスタンス化
return_HAB_list = Return_Info()
# ログ出力のfunction_idを作成
str_log_function_id = self.message.Log_Function_Id.id.format(
self.const.Log_Kinds.INFO,
self.const.Log_Process.SELECT,
self.const.Log_Function.HAB_DETAIL,
)
# STARTログ出力
error_message = self.create_log(
self.const.Log_Kinds.START,
str_log_function_id,
self.message.Log_Message.FILL.format(
self.display_name,
self.const.Table_Name.HAB_DETAIL,
arg_where_year_month,
self.const.Const_Text.TEXT_BLANK,
),
arg_user_id,
)
# STARTログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HAB_list.return_message_box = error_message
return return_HAB_list
else:
try:
# 家計簿一覧を取得するSELECT文を作成する
# マスタテーブルを別名で定義する
Master1 = aliased(Master)
Master2 = aliased(Master)
stmt = (
select(
HAB_Detail.HAB_seq,
HAB_Detail.HAB_at,
Master1.m_text.label("HAB_kbn"),
HAB_Detail.amount,
Master2.m_text.label("HABkinds"),
HAB_Detail.HABdetail,
).select_from(HAB_Detail)
# マスタテーブルと結合する
.join(
Master1,
onclause=and_(
HAB_Detail.HAB_kbn == Master1.m_code,
Master1.m_id == "HAB_kbn",
Master1.del_flg == "0",
),
)
# マスタテーブルと結合する
.join(
Master2,
onclause=and_(
HAB_Detail.HABkinds == Master2.m_code,
Master2.m_id == "HABkinds",
Master2.del_flg == "0",
),
)
# Where句に引数の検索条件を設定する
.where(
HAB_Detail.HAB_at.like(f"{arg_where_year_month}%"),
HAB_Detail.del_flg == self.const.Del_flg.NON_DELETE,
)
# 並び順を設定する
.order_by(
HAB_Detail.HAB_at,
HAB_Detail.HAB_kbn,
HAB_Detail.amount,
HAB_Detail.HABkinds,
)
)
# SELECT文を全件取得で実行する
select_row = self.session.execute(stmt).all()
# 返却用の返却行に取得した家計簿一覧を代入する
return_HAB_list.return_row = select_row
# ENDログ出力
error_message = self.create_log(
self.const.Log_Kinds.END,
str_log_function_id,
self.message.Log_Message.FILL.format(
self.display_name,
self.const.Table_Name.HAB_DETAIL,
arg_where_year_month,
len(select_row),
),
arg_user_id,
)
# ENDログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HAB_list.return_message_box = error_message
return return_HAB_list
else:
return return_HAB_list
except Exception as e:
# 例外エラー用メッセージ作成
return_HAB_list.return_message_box = self.exception_log(
str_log_function_id, e, arg_user_id
)
return return_HAB_list
finally:
# セッションを閉じる
self.session.close()
# 入出金円グラフデータ取得
def fill_HAB_kbn_PieChart_data(self, arg_where_year_month, arg_user_id):
"""
入出金円グラフデータを取得する
引数
arg_where_year_month:検索条件
arg_user_id:操作ユーザー
"""
# 返却用クラスをインスタンス化
return_HAB_kbn_PieChart_data = Return_Info()
# ログ出力のfunction_idを作成
str_log_function_id = self.message.Log_Function_Id.id.format(
self.const.Log_Kinds.INFO,
self.const.Log_Process.SELECT,
self.const.Log_Function.HAB_DETAIL,
)
# STARTログ出力
error_message = self.create_log(
self.const.Log_Kinds.START,
str_log_function_id,
self.message.Log_Message.FILL_HAB_kbn_PIECHART.format(
self.display_name,
self.const.Table_Name.HAB_DETAIL,
arg_where_year_month,
),
arg_user_id,
)
# STARTログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HAB_kbn_PieChart_data.return_message_box = error_message
return return_HAB_kbn_PieChart_data
else:
try:
# 入出金区分を取得するSELECT文を作成
HAB_kbn_stmt = select(Master).where(
Master.m_id == self.const.Master_ID.HAB_kbn,
)
# SELECT文を全件取得で実行する
select_HAB_kbn_row = self.session.scalars(HAB_kbn_stmt).all()
if len(select_HAB_kbn_row) == 0:
# 返却用のメッセージボックスにIDとメッセージ内容を代入する
return_HAB_kbn_PieChart_data.return_message_box.message_id = (
"HAB003W"
)
return_HAB_kbn_PieChart_data.return_message_box.message_text = (
self.message.Message_Box.HAB003W
)
# ENDログ出力
error_message = self.create_log(
self.const.Log_Kinds.END,
str_log_function_id,
self.message.Log_Message.FILL_HAB_kbn_PIECHART_ERROR.format(
self.display_name,
self.const.Table_Name.MASTER,
self.const.Master_ID.HAB_kbn,
),
arg_user_id,
)
# ENDログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HAB_kbn_PieChart_data.return_message_box = error_message
return return_HAB_kbn_PieChart_data
else:
return return_HAB_kbn_PieChart_data
else:
# 入出金円グラフデータを取得するSELECT文を作成する
# 副問い合わせ
sub_stmt = (
select(
Master.m_code.label("m_code"), Master.m_text.label("m_text")
)
.select_from(Master)
.where(
Master.m_id == self.const.Master_ID.HAB_kbn,
)
.subquery("master")
)
case_list = []
for HAB_kbn_row in select_HAB_kbn_row:
case_list.append(
(
sub_stmt.c.m_code == HAB_kbn_row.m_code
and HAB_Detail.HAB_kbn == HAB_kbn_row.m_code,
HAB_Detail.amount,
)
)
# 主問い合わせ
stmt = (
select(
sub_stmt.c.m_code,
sub_stmt.c.m_text,
func.coalesce(
func.sum(
case(*case_list),
),
0,
).label("amount"),
)
.select_from(sub_stmt)
# マスタテーブルと結合する
.outerjoin(
HAB_Detail,
onclause=and_(
sub_stmt.c.m_code == HAB_Detail.HAB_kbn,
HAB_Detail.HAB_at.like(
f"{arg_where_year_month}%",
),
HAB_Detail.del_flg == self.const.Del_flg.NON_DELETE,
),
)
.group_by(sub_stmt.c.m_text)
)
# SELECT文を全件取得で実行する
select_row = self.session.execute(stmt).all()
# 返却用の返却行に取得した家計簿一覧を代入する
return_HAB_kbn_PieChart_data.return_row = select_row
# ENDログ出力
error_message = self.create_log(
self.const.Log_Kinds.END,
str_log_function_id,
self.message.Log_Message.FILL_HAB_kbn_PIECHART.format(
self.display_name,
self.const.Table_Name.HAB_DETAIL,
arg_where_year_month,
),
arg_user_id,
)
# ENDログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HAB_kbn_PieChart_data.return_message_box = error_message
return return_HAB_kbn_PieChart_data
else:
return return_HAB_kbn_PieChart_data
except Exception as e:
# 例外エラー用メッセージ作成
return_HAB_kbn_PieChart_data.return_message_box = self.exception_log(
str_log_function_id, e, arg_user_id
)
return return_HAB_kbn_PieChart_data
finally:
# セッションを閉じる
self.session.close()
# 詳細種類円グラフデータ取得
def fill_HABkinds_PieChart_data(self, arg_where_year_month, arg_user_id):
"""
詳細種類グラフデータを取得する
引数
arg_where_year_month:検索条件
arg_user_id:操作ユーザー
"""
# 返却用クラスをインスタンス化
return_HABkinds_PieChart_data = Return_Info()
# ログ出力のfunction_idを作成
str_log_function_id = self.message.Log_Function_Id.id.format(
self.const.Log_Kinds.INFO,
self.const.Log_Process.SELECT,
self.const.Log_Function.HAB_DETAIL,
)
# STARTログ出力
error_message = self.create_log(
self.const.Log_Kinds.START,
str_log_function_id,
self.message.Log_Message.FILL_HABkinds_PIECHART.format(
self.display_name,
self.const.Table_Name.HAB_DETAIL,
arg_where_year_month,
),
arg_user_id,
)
# STARTログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HABkinds_PieChart_data.return_message_box = error_message
return return_HABkinds_PieChart_data
else:
try:
# 詳細種類を取得するSELECT文を作成
HABkinds_stmt = select(Master).where(
Master.m_id == self.const.Master_ID.HABkinds
)
# SELECT文を全件取得で実行する
select_HABkinds_row = self.session.scalars(HABkinds_stmt).all()
if len(select_HABkinds_row) == 0:
# 返却用のメッセージボックスにIDとメッセージ内容を代入する
return_HABkinds_PieChart_data.return_message_box.message_id = (
"HAB003W"
)
return_HABkinds_PieChart_data.return_message_box.message_text = (
self.message.Message_Box.HAB003W
)
# ENDログ出力
error_message = self.create_log(
self.const.Log_Kinds.END,
str_log_function_id,
self.message.Log_Message.FILL_HABkinds_PIECHART_ERROR.format(
self.display_name,
self.const.Table_Name.MASTER,
self.const.Master_ID.HABkinds,
),
arg_user_id,
)
# ENDログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HABkinds_PieChart_data.return_message_box = error_message
return return_HABkinds_PieChart_data
else:
return return_HABkinds_PieChart_data
else:
# 入出金円グラフデータを取得するSELECT文を作成する
# 副問い合わせ
sub_stmt = (
select(
Master.m_code.label("m_code"), Master.m_text.label("m_text")
)
.select_from(Master)
.where(
Master.m_id == self.const.Master_ID.HABkinds,
)
.subquery("master")
)
case_list = []
for HABkinds_row in select_HABkinds_row:
case_list.append(
(
sub_stmt.c.m_code == HABkinds_row.m_code
and HAB_Detail.HAB_kbn == HABkinds_row.m_code,
HAB_Detail.amount,
)
)
# 主問い合わせ
stmt = (
select(
sub_stmt.c.m_code,
sub_stmt.c.m_text,
func.coalesce(
func.sum(
case(*case_list),
),
0,
).label("amount"),
)
.select_from(sub_stmt)
# マスタテーブルと結合する
.outerjoin(
HAB_Detail,
onclause=and_(
sub_stmt.c.m_code == HAB_Detail.HABkinds,
HAB_Detail.HAB_at.like(f"{arg_where_year_month}%"),
HAB_Detail.HAB_kbn == self.const.HAB_kbn_code.kbn_out,
HAB_Detail.del_flg == self.const.Del_flg.NON_DELETE,
),
)
.group_by(sub_stmt.c.m_text)
)
# SELECT文を全件取得で実行する
select_row = self.session.execute(stmt).all()
# 返却用の返却行に取得した家計簿一覧を代入する
return_HABkinds_PieChart_data.return_row = select_row
# ENDログ出力
error_message = self.create_log(
self.const.Log_Kinds.END,
str_log_function_id,
self.message.Log_Message.FILL_HABkinds_PIECHART.format(
self.display_name,
self.const.Table_Name.HAB_DETAIL,
arg_where_year_month,
),
arg_user_id,
)
# ENDログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HABkinds_PieChart_data.return_message_box = error_message
return return_HABkinds_PieChart_data
else:
return return_HABkinds_PieChart_data
except Exception as e:
# 例外エラー用メッセージ作成
return_HABkinds_PieChart_data.return_message_box = self.exception_log(
str_log_function_id, e, arg_user_id
)
return return_HABkinds_PieChart_data
finally:
# セッションを閉じる
self.session.close()
# 家計簿登録
def create_HAB_list(self, arg_HAB_ditail_row: HAB_Detail, arg_user_id):
"""
家計簿を登録する
引数
arg_HAB_ditail_row:家計簿
arg_user_id:操作ユーザー
"""
# 返却用クラスをインスタンス化
return_HAB_list = Return_Info()
# ログ出力のfunction_idを作成
str_log_function_id = self.message.Log_Function_Id.id.format(
self.const.Log_Kinds.INFO,
self.const.Log_Process.INSERT,
self.const.Log_Function.HAB_DETAIL,
)
# 新規登録する家計簿の年月日時刻を作成する
log_ditail = arg_HAB_ditail_row.HAB_at.strftime("%Y-%m-%d %H:%M")
# STARTログ出力
error_message = self.create_log(
self.const.Log_Kinds.START,
str_log_function_id,
self.message.Log_Message.INSERT.format(
self.display_name,
self.const.Table_Name.HAB_DETAIL,
log_ditail,
),
arg_user_id,
)
# STARTログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HAB_list.return_message_box = error_message
return return_HAB_list
else:
try:
# 家計簿を登録する
self.session.add(arg_HAB_ditail_row)
self.session.commit()
# 返却する登録完了メッセージを作成する
return_HAB_list.return_message_box.message_id = "HAB001I"
return_HAB_list.return_message_box.message_text = (
self.message.Message_Box.HAB001I
)
# ENDログ出力
error_message = self.create_log(
self.const.Log_Kinds.END,
str_log_function_id,
self.message.Log_Message.INSERT.format(
self.display_name,
self.const.Table_Name.HAB_DETAIL,
log_ditail,
),
arg_user_id,
)
# ENDログ出力失敗の場合
if error_message != None:
# 返却用のメッセージボックスに例外エラーメッセージを代入する
return_HAB_list.return_message_box = error_message
return return_HAB_list
else:
return return_HAB_list
except Exception as e:
# 例外エラー用メッセージ作成
return_HAB_list.return_message_box = self.exception_log(
str_log_function_id, e, arg_user_id
)
return return_HAB_list
finally:
# セッションを閉じる
self.session.close()