fix: 港股个股回填健壮解析——只取前6数字字段,忽略末尾dict附加字段(腾讯部分bar带dict致float报错)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user