feat(datasource): 股票info字段放到API响应最外层
- yfinance_source.py: stock_info 存储在 df.attrs['info'] 中
- flask_server.py: dataframe_to_json 从 df.attrs 提取 info 放到最外层
- flask_server.py: 缓存切片函数保留 info 字段
- Dockerfile: 启用 Flask 服务作为默认 CMD(端口80)
响应结构示例:
{
"data": [{"date": "2024-01-01", "code": "AAPL", ...}],
"info": {"sector": "Technology", "industry": "...", ...}
}
This commit is contained in:
@@ -55,6 +55,7 @@ class YFinanceSource:
|
||||
|
||||
Returns:
|
||||
DataFrame with columns: date, open, high, low, close, volume
|
||||
股票元信息存储在 df.attrs['info'] 中
|
||||
"""
|
||||
import yfinance as yf
|
||||
|
||||
@@ -67,6 +68,13 @@ class YFinanceSource:
|
||||
try:
|
||||
ticker = yf.Ticker(yf_code)
|
||||
|
||||
# 获取股票信息(仅对股票/ETF有效,指数可能没有)
|
||||
stock_info = {}
|
||||
try:
|
||||
stock_info = ticker.info or {}
|
||||
except Exception:
|
||||
pass # 指数可能没有info
|
||||
|
||||
# end_date 需要加一天(yfinance的end是排他的)
|
||||
end_dt = datetime.strptime(end_date, "%Y-%m-%d") + timedelta(days=1)
|
||||
|
||||
@@ -96,6 +104,10 @@ class YFinanceSource:
|
||||
# 添加代码列
|
||||
df["code"] = code
|
||||
|
||||
# 将股票信息存储到 DataFrame.attrs 中(最外层结构)
|
||||
df.attrs['info'] = stock_info
|
||||
df.attrs['code'] = code
|
||||
|
||||
return df[['code', 'open', 'high', 'low', 'close', 'volume']]
|
||||
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user