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

Flask读取YAML构造Mongo查询报unhashable type: 'dict'如何解决

报错原因

  • 核心问题出在MongoDB的find方法第二个参数的写法:你将已经是字典类型的show额外套了一层大括号{},这会被Python识别为创建一个包含show字典的集合。但集合要求所有元素必须是可哈希类型,字典本身不可哈希,直接触发TypeError: unhashable type: 'dict'错误。
  • 额外冗余点:你写的{"$and":[file]}没有必要,file本身就是多条件与逻辑的查询字典,直接作为find的第一个参数即可。

修复方案

直接修改报错行的代码即可:

# 原错误代码
# que1 = db.data.find({"$and":[file]},{show})
# 修复后代码
que1 = db.data.find(file, show)

额外优化建议

  • 加载YAML时建议用yaml.safe_load()替代yaml.load(),避免恶意YAML内容导致的代码执行风险。
  • 你当前的代码每次请求都会修改本地的query.yaml文件,高并发场景下会出现文件读写冲突,如果是多用户使用的场景,建议不要把用户提交的查询条件落地到本地文件,直接在内存中拼接查询条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:36:04