fix(batch_reassess): 价格从stock_daily读,PE/市值从stock_fundamentals读,移除所有curl API调用

This commit is contained in:
xxm
2026-08-20 22:17:19 +08:00
parent 6e7e9ca061
commit 8c880e1b7c
+13 -14
View File
@@ -262,21 +262,20 @@ def collect_data(code):
prefix = "sz"
try:
_pconn = sqlite3.connect(DB, timeout=30)
_lp = _pconn.execute("SELECT price, change_pct FROM live_prices WHERE code=?", (code,)).fetchone()
if _lp and _lp[0]:
data["price"] = float(_lp[0])
data["change_pct"] = _lp[1] if _lp[1] is not None else "0"
# 价格: stock_daily(收盘价,全市场覆盖) 优先, live_prices(盘中) 其次
_sd = _pconn.execute("SELECT close FROM stock_daily WHERE code=? ORDER BY date DESC LIMIT 1", (code,)).fetchone()
if _sd and _sd[0]:
data["price"] = float(_sd[0])
else:
_lp = _pconn.execute("SELECT price FROM live_prices WHERE code=?", (code,)).fetchone()
data["price"] = float(_lp[0]) if _lp and _lp[0] else 0
data["change_pct"] = "0"
# PE/市值: 从stock_fundamentals读(fundamentals_full_refresh全市场覆盖)
_ff = _pconn.execute("SELECT pe, pb, mcap_total FROM stock_fundamentals WHERE code=?", (code,)).fetchone()
if _ff:
data["pe"] = str(_ff[0]) if _ff[0] else ""
data["mcap"] = str(_ff[1]) if _ff[1] else "" # PB暂时不用,但mcap_total是市值
else:
_sd = _pconn.execute("SELECT close FROM stock_daily WHERE code=? ORDER BY date DESC LIMIT 1", (code,)).fetchone()
data["price"] = float(_sd[0]) if _sd and _sd[0] else 0
data["change_pct"] = "0"
try:
_pfx = "hk" if len(str(code)) == 5 else ("sh" if str(code).startswith(("6","9")) else "sz")
_r = subprocess.run(["curl", "-s", f"http://qt.gtimg.cn/q={_pfx}{code}"], capture_output=True, timeout=10)
_parts = _r.stdout.decode("gbk", errors="ignore").split("~")
data["pe"] = _parts[39] if len(_parts) > 39 and _parts[39] else ""
data["mcap"] = _parts[44] if len(_parts) > 44 and _parts[44] else ""
except:
data["pe"] = ""
data["mcap"] = ""
_pconn.close()