From 8c6e41b6190c8d7872e8d219b480a4492e7b1936 Mon Sep 17 00:00:00 2001 From: hmo Date: Fri, 14 Aug 2026 21:10:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B8=AF=E8=82=A1=E4=B8=AA=E8=82=A1?= =?UTF-8?q?=E5=9B=9E=E5=A1=AB=E5=81=A5=E5=A3=AE=E8=A7=A3=E6=9E=90=E2=80=94?= =?UTF-8?q?=E2=80=94=E5=8F=AA=E5=8F=96=E5=89=8D6=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E5=AD=97=E6=AE=B5,=E5=BF=BD=E7=95=A5=E6=9C=AB=E5=B0=BEdict?= =?UTF-8?q?=E9=99=84=E5=8A=A0=E5=AD=97=E6=AE=B5(=E8=85=BE=E8=AE=AF?= =?UTF-8?q?=E9=83=A8=E5=88=86bar=E5=B8=A6dict=E8=87=B4float=E6=8A=A5?= =?UTF-8?q?=E9=94=99)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/profile-scripts/backfill_hk_stocks.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/deploy/profile-scripts/backfill_hk_stocks.py b/deploy/profile-scripts/backfill_hk_stocks.py index d7766bde..e8fe547e 100644 --- a/deploy/profile-scripts/backfill_hk_stocks.py +++ b/deploy/profile-scripts/backfill_hk_stocks.py @@ -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