fix: 港股个股回填健壮解析——只取前6数字字段,忽略末尾dict附加字段(腾讯部分bar带dict致float报错)

This commit is contained in:
hmo
2026-08-14 21:10:09 +08:00
parent ddd2e12b38
commit 8c6e41b619
+11 -7
View File
@@ -57,16 +57,20 @@ def main():
continue
new = 0
for b in bars:
# 健壮解析:只取前6字段(date,open,close,high,low,volume),且都须为数字
# (腾讯港股部分 bar 末尾带 dict 附加字段,会导致 float() 报错)
try:
date, open_, close, high, low = b[0], b[1], b[2], b[3], b[4]
volume = float(b[5]) if len(b) > 5 and b[5] not in (None, "") else 0
amount = float(b[6]) if len(b) > 6 and b[6] not in (None, "") else 0
except (IndexError, ValueError):
if not isinstance(b, (list, tuple)) or len(b) < 6:
continue
date = b[0]
open_, close, high, low = float(b[1]), float(b[2]), float(b[3]), float(b[4])
volume = float(b[5]) if b[5] not in (None, "") else 0.0
except (IndexError, ValueError, TypeError):
continue
cur = conn.execute(
"INSERT OR IGNORE INTO stock_daily (code, date, open, close, high, low, volume, amount) "
"VALUES (?,?,?,?,?,?,?,?)",
(code, date, float(open_), float(close), float(high), float(low), volume, amount))
"INSERT OR IGNORE INTO stock_daily (code, date, open, close, high, low, volume) "
"VALUES (?,?,?,?,?,?,?)",
(code, date, open_, close, high, low, volume))
new += cur.rowcount
total_new += new
ok += 1