update ui
This commit is contained in:
32
app.py
32
app.py
@@ -68,6 +68,17 @@ def load_trading_days():
|
|||||||
print(f"加载交易日数据失败: {e}")
|
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):
|
def get_trading_day_near_date(target_date):
|
||||||
"""
|
"""
|
||||||
获取距离目标日期最近的交易日
|
获取距离目标日期最近的交易日
|
||||||
@@ -5642,7 +5653,8 @@ def get_stock_basic_info(stock_code):
|
|||||||
|
|
||||||
# 转换为字典
|
# 转换为字典
|
||||||
basic_info = {}
|
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):
|
if isinstance(value, datetime):
|
||||||
basic_info[key] = value.strftime('%Y-%m-%d')
|
basic_info[key] = value.strftime('%Y-%m-%d')
|
||||||
elif isinstance(value, Decimal):
|
elif isinstance(value, Decimal):
|
||||||
@@ -5685,7 +5697,7 @@ def get_stock_announcements(stock_code):
|
|||||||
announcements = []
|
announcements = []
|
||||||
for row in result:
|
for row in result:
|
||||||
announcement = {}
|
announcement = {}
|
||||||
for key, value in zip(row.keys(), row):
|
for key, value in row_to_dict(row).items():
|
||||||
if value is None:
|
if value is None:
|
||||||
announcement[key] = None
|
announcement[key] = None
|
||||||
elif isinstance(value, datetime):
|
elif isinstance(value, datetime):
|
||||||
@@ -5734,7 +5746,7 @@ def get_stock_disclosure_schedule(stock_code):
|
|||||||
schedules = []
|
schedules = []
|
||||||
for row in result:
|
for row in result:
|
||||||
schedule = {}
|
schedule = {}
|
||||||
for key, value in zip(row.keys(), row):
|
for key, value in row_to_dict(row).items():
|
||||||
if value is None:
|
if value is None:
|
||||||
schedule[key] = None
|
schedule[key] = None
|
||||||
elif isinstance(value, datetime):
|
elif isinstance(value, datetime):
|
||||||
@@ -5815,7 +5827,7 @@ def get_stock_actual_control(stock_code):
|
|||||||
control_info = []
|
control_info = []
|
||||||
for row in result:
|
for row in result:
|
||||||
control_record = {}
|
control_record = {}
|
||||||
for key, value in zip(row.keys(), row):
|
for key, value in row_to_dict(row).items():
|
||||||
if value is None:
|
if value is None:
|
||||||
control_record[key] = None
|
control_record[key] = None
|
||||||
elif isinstance(value, datetime):
|
elif isinstance(value, datetime):
|
||||||
@@ -5864,7 +5876,7 @@ def get_stock_concentration(stock_code):
|
|||||||
concentration_info = []
|
concentration_info = []
|
||||||
for row in result:
|
for row in result:
|
||||||
concentration_record = {}
|
concentration_record = {}
|
||||||
for key, value in zip(row.keys(), row):
|
for key, value in row_to_dict(row).items():
|
||||||
if value is None:
|
if value is None:
|
||||||
concentration_record[key] = None
|
concentration_record[key] = None
|
||||||
elif isinstance(value, datetime):
|
elif isinstance(value, datetime):
|
||||||
@@ -5933,7 +5945,7 @@ def get_stock_management(stock_code):
|
|||||||
management_info = []
|
management_info = []
|
||||||
for row in result:
|
for row in result:
|
||||||
management_record = {}
|
management_record = {}
|
||||||
for key, value in zip(row.keys(), row):
|
for key, value in row_to_dict(row).items():
|
||||||
if value is None:
|
if value is None:
|
||||||
management_record[key] = None
|
management_record[key] = None
|
||||||
elif isinstance(value, datetime):
|
elif isinstance(value, datetime):
|
||||||
@@ -5992,7 +6004,7 @@ def get_stock_top_circulation_shareholders(stock_code):
|
|||||||
shareholders_info = []
|
shareholders_info = []
|
||||||
for row in result:
|
for row in result:
|
||||||
shareholder_record = {}
|
shareholder_record = {}
|
||||||
for key, value in zip(row.keys(), row):
|
for key, value in row_to_dict(row).items():
|
||||||
if value is None:
|
if value is None:
|
||||||
shareholder_record[key] = None
|
shareholder_record[key] = None
|
||||||
elif isinstance(value, datetime):
|
elif isinstance(value, datetime):
|
||||||
@@ -6051,7 +6063,7 @@ def get_stock_top_shareholders(stock_code):
|
|||||||
shareholders_info = []
|
shareholders_info = []
|
||||||
for row in result:
|
for row in result:
|
||||||
shareholder_record = {}
|
shareholder_record = {}
|
||||||
for key, value in zip(row.keys(), row):
|
for key, value in row_to_dict(row).items():
|
||||||
if value is None:
|
if value is None:
|
||||||
shareholder_record[key] = None
|
shareholder_record[key] = None
|
||||||
elif isinstance(value, datetime):
|
elif isinstance(value, datetime):
|
||||||
@@ -6102,7 +6114,7 @@ def get_stock_branches(stock_code):
|
|||||||
branches_info = []
|
branches_info = []
|
||||||
for row in result:
|
for row in result:
|
||||||
branch_record = {}
|
branch_record = {}
|
||||||
for key, value in zip(row.keys(), row):
|
for key, value in row_to_dict(row).items():
|
||||||
if value is None:
|
if value is None:
|
||||||
branch_record[key] = None
|
branch_record[key] = None
|
||||||
elif isinstance(value, datetime):
|
elif isinstance(value, datetime):
|
||||||
@@ -6169,7 +6181,7 @@ def get_stock_patents(stock_code):
|
|||||||
patents_info = []
|
patents_info = []
|
||||||
for row in result:
|
for row in result:
|
||||||
patent_record = {}
|
patent_record = {}
|
||||||
for key, value in zip(row.keys(), row):
|
for key, value in row_to_dict(row).items():
|
||||||
if value is None:
|
if value is None:
|
||||||
patent_record[key] = None
|
patent_record[key] = None
|
||||||
elif isinstance(value, datetime):
|
elif isinstance(value, datetime):
|
||||||
|
|||||||
Reference in New Issue
Block a user