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

Peewee使用insert_many批量插入时报Missing value错误的排查解决

错误原因

你调用insert_many时给已经是字典列表结构的data额外套了一层列表括号,是该问题的核心诱因:

  • 错误写法:.insert_many([data])
  • 正确写法:.insert_many(data)

data本身已经符合insert_many要求的「字典/元组组成的列表」格式,额外加一层括号后实际传入的是嵌套列表[[{...}, {...}]]。peewee解析时会把整个内层data列表当成单条插入数据,自然匹配不到字段对应的值,就抛出了字段缺失报错。

其他需要修正的点

你代码中on_conflict部分的参数也存在错误:

  1. conflict_target需要和表的唯一索引对应,你表的唯一索引是symbol_id,需要检查字段名是否匹配
  2. update参数不能直接传入data,需要指定冲突时要更新的字段,参考写法如下:
from peewee import EXCLUDED

# 省略前面构造data的代码
insert_query = (c_db.Tickers
                    .insert_many(data)
                    .on_conflict(
                        conflict_target = [c_db.Tickers.symbol],
                        update = {
                            "weighted_average_price": EXCLUDED.weighted_average_price,
                            "total_traded_base_asset_volume": EXCLUDED.total_traded_base_asset_volume,
                            "total_traded_quote_asset_volume": EXCLUDED.total_traded_quote_asset_volume
                        }
                    )
                    .execute()
)

其中EXCLUDED指代冲突时原本要插入的新数据行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:27:03