fix(batch_reassess): 价格从stock_daily读,PE/市值从stock_fundamentals读,移除所有curl API调用
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user