From 8315aac4d933519d79716200143a3eba8558c20b Mon Sep 17 00:00:00 2001 From: zzlgreat Date: Fri, 14 Nov 2025 15:14:23 +0800 Subject: [PATCH] update ui --- app.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/app.py b/app.py index bd9d5431..0384f2c2 100755 --- a/app.py +++ b/app.py @@ -68,6 +68,17 @@ def load_trading_days(): print(f"加载交易日数据失败: {e}") +def row_to_dict(row): + """ + 将 SQLAlchemy Row 对象转换为字典 + 兼容 SQLAlchemy 1.4+ 版本 + """ + if row is None: + return None + # 使用 _mapping 属性来访问列数据 + return dict(row._mapping) + + def get_trading_day_near_date(target_date): """ 获取距离目标日期最近的交易日 @@ -5642,7 +5653,8 @@ def get_stock_basic_info(stock_code): # 转换为字典 basic_info = {} - for key, value in zip(result.keys(), result): + result_dict = row_to_dict(result) + for key, value in result_dict.items(): if isinstance(value, datetime): basic_info[key] = value.strftime('%Y-%m-%d') elif isinstance(value, Decimal): @@ -5685,7 +5697,7 @@ def get_stock_announcements(stock_code): announcements = [] for row in result: announcement = {} - for key, value in zip(row.keys(), row): + for key, value in row_to_dict(row).items(): if value is None: announcement[key] = None elif isinstance(value, datetime): @@ -5734,7 +5746,7 @@ def get_stock_disclosure_schedule(stock_code): schedules = [] for row in result: schedule = {} - for key, value in zip(row.keys(), row): + for key, value in row_to_dict(row).items(): if value is None: schedule[key] = None elif isinstance(value, datetime): @@ -5815,7 +5827,7 @@ def get_stock_actual_control(stock_code): control_info = [] for row in result: control_record = {} - for key, value in zip(row.keys(), row): + for key, value in row_to_dict(row).items(): if value is None: control_record[key] = None elif isinstance(value, datetime): @@ -5864,7 +5876,7 @@ def get_stock_concentration(stock_code): concentration_info = [] for row in result: concentration_record = {} - for key, value in zip(row.keys(), row): + for key, value in row_to_dict(row).items(): if value is None: concentration_record[key] = None elif isinstance(value, datetime): @@ -5933,7 +5945,7 @@ def get_stock_management(stock_code): management_info = [] for row in result: management_record = {} - for key, value in zip(row.keys(), row): + for key, value in row_to_dict(row).items(): if value is None: management_record[key] = None elif isinstance(value, datetime): @@ -5992,7 +6004,7 @@ def get_stock_top_circulation_shareholders(stock_code): shareholders_info = [] for row in result: shareholder_record = {} - for key, value in zip(row.keys(), row): + for key, value in row_to_dict(row).items(): if value is None: shareholder_record[key] = None elif isinstance(value, datetime): @@ -6051,7 +6063,7 @@ def get_stock_top_shareholders(stock_code): shareholders_info = [] for row in result: shareholder_record = {} - for key, value in zip(row.keys(), row): + for key, value in row_to_dict(row).items(): if value is None: shareholder_record[key] = None elif isinstance(value, datetime): @@ -6102,7 +6114,7 @@ def get_stock_branches(stock_code): branches_info = [] for row in result: branch_record = {} - for key, value in zip(row.keys(), row): + for key, value in row_to_dict(row).items(): if value is None: branch_record[key] = None elif isinstance(value, datetime): @@ -6169,7 +6181,7 @@ def get_stock_patents(stock_code): patents_info = [] for row in result: patent_record = {} - for key, value in zip(row.keys(), row): + for key, value in row_to_dict(row).items(): if value is None: patent_record[key] = None elif isinstance(value, datetime):