首页 > 解决方案 > 无法保存 Python 的 Flask 会话中对象列表中的 MongoDB 集合数据

问题描述

我正在为我的应用程序使用 Python 的 Flask 和 MongoDB。当前逻辑进行 MongoDB 查询并获取输出并将对象列表分配给 python 变量。对于此任务,bson.json_util 转储和加载用于序列化 ObjectId。

但是,当我尝试将 MongoDB 输出保存在烧瓶会话中而不是为其分配一个变量时,即使在使用转储和加载序列化 JSON 之后,我也面临“TypeError:'ObjectId' 类型的对象不是 JSON 可序列化”错误

请找到下面提到的工作流程

数据格式:

project_details = {'_id': ObjectId('6183fba35******'), 'project_title': 'PROJECT_A,'project_id': ObjectId('6183fb8**********'), 'Author': 'Author_Title'}

MongoDB Collection = [Project_Detail 1, Project_Detail 2, .... ]

没有烧瓶会话的 Python 代码:

projects = loads(dumps(mongo_collection.find({"project_id": {"$eq": ObjectId(project_details['project_id'])}}))) 状态:执行成功!

带有烧瓶会话的 Python 代码(失败):

session['project_lists'] = list() session['project_lists'] = loads(dumps(mongo_collection.find({"project_id": {"$eq": ObjectId(project_details['project_id'])}})))

状态:TypeError:“ObjectId”类型的对象不是 JSON 可序列化的

我能够将 project_title 和 project_id 分别保存在会话中,但无法保存会话中的对象列表。 如何保存 Flask Session 中具有 ObjectId 的对象列表中的 MongoDB 查询结果?

谢谢!

标签: pythonmongodbflasksessionjson-serializable

解决方案


推荐阅读