You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3使用Google BigQuery流式写入报400 No rows错误未捕获问题

错误可能的产生原因

  • 传入client.insert_rows的待插入数据集bigquery_rows_to_insert本身为空,服务端校验请求时未检测到有效行,直接返回400错误
  • 构造的行数据格式不符合BigQuery要求,所有行都在SDK发送请求前被过滤丢弃,最终发往服务端的请求没有有效载荷
  • 若使用的是旧版本BigQuery Python SDK,存在已知边界bug:当行数据所有字段全为NULL、或字段名与表结构完全不匹配时,SDK会静默丢弃全部行,最终发起空请求触发错误

现有捕获逻辑未生效的原因

  • 当前代码只捕获了assert语句抛出的AssertionError,但BadRequest 400属于请求层面的全局异常,client.insert_rows方法遇到这类错误时会直接抛出对应异常(google.api_core.exceptions.BadRequest),根本不会执行到后续的assert校验步骤,自然无法被捕获
  • insert_rows方法的返回值errors仅用来承载行级插入错误(比如单条数据字段类型不匹配、缺少必填字段),所有请求级别的全局错误(空请求、权限不足、目标表不存在等)都会直接以异常形式抛出,不会写入返回的errors列表,你现有只校验返回值的逻辑覆盖不到这类问题。

内容的提问来源于stack exchange,提问作者Vit Amin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:15:08