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

使用Flask构建REST API时报ValueError: not enough values to unpack错误

问题根因

你遇到的报错是Marshmallow大版本API不兼容导致的:
你参考的2019年《Building REST APIs with Flask》书籍示例基于Marshmallow 2.x版本开发,该版本中dump()方法会返回(序列化结果, 错误信息)二元组,所以示例代码用两个变量接收返回值。
而你当前使用的Marshmallow 3.13.0属于3.x版本,该版本做了不兼容的API调整:

  • dump()方法仅返回序列化后的结果,不再附带错误信息返回值
  • 校验逻辑被统一剥离到load()、validate()方法中,序列化(dump)阶段不会产生业务校验错误,不需要额外处理错误返回值
    你还按2.x的写法尝试解包两个返回值,自然会触发expected 2, got 0的解包错误。
解决方案

直接修改视图函数中的序列化代码即可:
将原代码:

authors, error = author_schema.dump(fetched)

修改为:

authors = author_schema.dump(fetched)

如果需要做入参校验,调用schema.load()方法即可,该方法会在校验失败时主动抛出ValidationError,你捕获异常后做对应错误返回即可。

如果要完全对齐书籍的2.x版本代码逻辑,也可以降级依赖版本,但不推荐该方案,3.x是当前官方维护的主流版本,包含安全更新和性能优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:36:01