Flask-PyMongo - InsertOneResult 类型的对象不可 JSON 序列化

2024-01-24

我有一个 api,我正在尝试使用 Flask-Pymongo 存储/发布用户对象。

但是,我收到以下错误

文件 “/home/kay/.local/share/virtualenvs/server-iT4jZt3h/lib/python3.7/site-packages/flask/json/i│ nit.py”,第 321 行,在 jsonify 中
│ 转储(数据, 缩进=缩进, 分隔符=分隔符) + '\n', │ 文件 “/home/kay/.local/share/virtualenvs/server-iT4jZt3h/lib/python3.7/site-packages/flask/json/i│ nit.py”,第 179 行,转储中
│ rv = _json.dumps(obj, **kwargs) │ 文件“/usr/lib/python3.7/json/init.py”,第 238 行,转储中
│ **kw).encode(obj) │ 文件“/usr/lib/python3.7/json/encoder.py”,第 201 行,编码中
│ chunks = list(chunks) │ 文件“/usr/lib/python3.7/json/encoder.py”,第 438 行,位于 _iterencode │ o = _default(o) │ 文件“/home/kay/link/server/src/run.py”,第 18 行,默认
│ return json.JSONEncoder.default(self, o) │ 文件“/usr/lib/python3.7/json/encoder.py”,第 179 行,默认
│ 引发 TypeError(f' 类型为 {o.class.name} ' │ TypeError:InsertOneResult 类型的对象不可 JSON 序列化

应用程序/用户/资源.py

from flask_restful import Resource
from flask import jsonify, request
from .repository import UsersRepository
from db import mongo


class UsersResource(Resource):

    def __init__(self):

        self.repository = UsersRepository()

    def get(self):

        data = {"Users": "Resource"}
        res = data, 200
        return res

    def post(self):

        req = request.get_json()

        user = {
            "email": req.get("email"),
            "password": req.get("password")
        }

        result = mongo.db.users.insert_one(user)

        return jsonify(result)

run.py

from flask import Flask
from app import api_bp
from db import mongo
from bson.objectid import ObjectId
import json
import datetime
import os

class JSONEncoder(json.JSONEncoder):

    def default(self, o):
        if isinstance(o, ObjectId):
            return str(o)
        if isinstance(o, set):
            return list(o)
        if isinstance(o, datetime.datetime):
            return str(o)
        return json.JSONEncoder.default(self, o)



def create_app(config_filename):

    app = Flask(__name__)
    app.config.from_object(config_filename)
    app.register_blueprint(api_bp, url_prefix='/api')

    mongo.init_app(app)

    app.json_encoder = JSONEncoder

    return app


# def logger():


# def database():


if __name__ == "__main__":
    app = create_app("config")
    app.run(host='0.0.0.0', port=8080, debug=True)

相信根据之前的建议你可以找到答案。但我想提供另一种简化它的解决方案。

该解决方案假设pymongo and flask软件包已安装:

from flask import Flask
from flask.json import JSONEncoder

from bson import json_util

from . import resources

# define a custom encoder point to the json_util provided by pymongo (or its dependency bson)
class CustomJSONEncoder(JSONEncoder):
    def default(self, obj): return json_util.default(obj)

application = Flask(__name__)
application.json_encoder = CustomJSONEncoder

if __name__ == "__main__":
    application.run()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask-PyMongo - InsertOneResult 类型的对象不可 JSON 序列化 的相关文章

  • Python Nose 导入错误

    我似乎无法理解鼻子测试框架 https nose readthedocs org en latest 识别文件结构中测试脚本下方的模块 我已经设置了演示该问题的最简单的示例 下面我会解释一下 这是包文件结构 init py foo py t
  • KFold 和 ShuffleSplit CV 有什么区别?

    看起来 KFold 每次迭代对象时都会生成相同的值 而 Shuffle Split 每次都会生成不同的索引 它是否正确 如果是这样 其中一个相对于另一个有什么用处 cv cross validation KFold 10 n folds 2
  • Python 在 chroot 中运行时出现错误

    我尝试在 chroot 中运行一些 Python 程序 但出现以下错误 Could not find platform independent libraries
  • 底图上的子图

    我有一张英国地图和 121 个地点 每个地点有 3 个值 我想绘制 121 个位置中每个位置的三个值的小条形图 目前 这些值绘制为markersize属性 看起来像这样 密集恐惧症情节 https i stack imgur com 5fv
  • 子进程改变目录

    我想在子目录 超级目录中执行脚本 我需要首先进入该子目录 超级目录 我无法得到subprocess进入我的子目录 tducin localhost Projekty tests ve python Python 2 7 4 default
  • Python 中的安全解除引用

    Groovy 有一个很好的安全取消引用运算符 这有助于避免 NullPointerExceptions variable method The method仅当以下情况时才会被调用variable is not null 有没有办法在 Py
  • Python + PostgreSQL + 奇怪的ascii = UTF8编码错误

    我有包含字符的 ascii 字符串 x80 代表欧元符号 gt gt gt print x80 当将包含该字符的字符串数据插入数据库时 我得到 psycopg2 DataError invalid byte sequence for enc
  • Python 正则表达式部分匹配或“hitEnd”

    我正在编写一个扫描器 因此我将任意字符串与正则表达式规则列表进行匹配 如果我可以模拟 Java hitEnd 功能 不仅知道正则表达式何时不匹配 还知道何时匹配 这将非常有用 can t匹配 当正则表达式匹配器在决定拒绝输入之前到达输入末尾
  • Django 的 URL 覆盖率测试为 0%,为什么?

    使用姜戈鼻子 我对 URL 进行了测试 但 URL 覆盖率仍然为 0 为什么 python manage py 测试配置文件 这是我的报道 Name Stmts Miss Cover Missing profiles 0 0 100 pro
  • 如何使用循环将十进制转换为二进制?

    我想编写一个程序 将十进制数 0 到 9 转换为二进制数 我可以编写如何使用重复除法将十进制数转换为二进制数的代码 但是 我在创建一个以二进制格式打印十进制数字 0 到 9 的循环时遇到了麻烦 这是我的代码 number 0 remaind
  • 为 Networkx 图添加标题?

    我希望我的代码创建一个带有标题的图 使用下面的代码 可以创建绘图 但没有标题 有人可以告诉我我做错了什么吗 import pandas as pd import networkx as nx from networkx algorithms
  • 如何修复错误“AttributeError:‘模块’对象在 python3 中没有属性‘客户端’?

    以下是我的代码 import http h1 http client HTTPConnection www bing com 我认为没问题 但是 python 给了我以下错误 AttributeError 模块 对象没有属性 客户端 我想知
  • 在Python中删除带有重音符号的字符串中的所有非字母字符

    我正在尝试使用 Python 3 7 从包含重音符号的字符串中删除所有非字母字符 空格除外 我尝试了以下方法 import re text 29 1981 4 2008 clean text re sub W d text print cl
  • 在 matplotlib 中使用 yscale('log') 时缺少误差线

    在某些情况下 当使用对数刻度时 matplotlib 会错误地显示带有误差条的图 假设这些数据 例如在 pylab 内 s 19 0 20 0 21 0 22 0 24 0 v 36 5 66 814250000000001 130 177
  • 求解不等式系统时“多项式错误:仅允许使用单变量多项式”

    我想找到以下两个常数的区间cons1 and cons2我写了下面的代码 from sympy import Poly from sympy import Abs from sympy solvers inequalities import
  • Django 接受 AM/PM 作为表单输入

    我试图弄清楚如何使用 DateTime 字段在 Django 中接受 am pm 作为时间格式 但我遇到了一些麻烦 我尝试在 forms py 文件中这样设置 pickup date time from DateTimeField inpu
  • 如何向 SCons 构建添加预处理和后处理操作?

    我正在尝试在使用 SCons 构建项目时添加预处理和后处理操作 SConstruct 和 SConscript 文件位于项目的顶部 预处理动作 生成代码 通过调用不同的工具 gt 不知道在此预处理之后将生成的确切文件 可以创建用于决定生成哪
  • scipysolve_ivp() 中的访问时间步长

    我有一个常微分方程系统 正在使用 scipy 的solve ivp 函数求解 它运行良好 但我在访问每个步骤中使用的时间步时遇到问题 我知道solve ivp 将当前时间传递给用户定义的函数 但我需要使用的时间步长 而不是当前时间 为了解决
  • Python 枚举子集迭代

    我想迭代以下枚举的子集 class Items enum Enum item1 0 item2 1 item3 2 item4 3 item5 4 item6 5 item7 6 item8 7 说我想 for item in Items
  • 为什么用字符串和时间增量转置 DataFrame 会转换数据类型?

    这种行为对我来说似乎很奇怪 id列 字符串 在转置后转换为时间戳df如果另一列是时间增量 import pandas as pd df pd DataFrame id 00115 01222 32333 val 12 14 170 df v

随机推荐

  • Rails3 中的 Ajax 回调

    在rails 2中 对于ajax表单 我们可以有ajax回调 例如之前 之后等 如何在rails 3中做到这一点 我也有同样的问题 并且这个帖子 http blancer com tutorials 105318 using unobtru
  • 将 BigQuery 数据导出为 CSV,而不使用 Google Cloud Storage

    我目前正在编写一个软件 用于导出大量 BigQuery 数据并将查询结果存储为本地 CSV 文件 我使用的是Python 3和google提供的客户端 我进行了配置和身份验证 但问题是 我无法在本地存储数据 每次我执行时 我都会跟随错误信息
  • 轮询成功,但出现错误:操作正在进行中 (29)。当 Xdebug 尝试从 docker 容器连接到 PhpStorm 时

    我正在尝试调试 CLI 脚本 但 Xdebug 无法连接到 PhpStorm 我看到错误Operation now in progress 29 在 Xdebug 远程日志中 我确信 Xdebug 配置正确 但我不知道如何调试 PhpSto
  • 如何删除焦点输入的默认值

    我有一个输入框 分配有默认值文本 当用户聚焦于该字段时 如何删除此文本 CoDE
  • 如何在python中随机化图像像素

    我对计算视觉和Python很陌生 我无法真正弄清楚出了什么问题 我尝试随机化 RGB 图像中的所有图像像素 但结果证明我的图像完全错误 如下所示 有人可以解释一下吗 from scipy import misc import numpy a
  • IIS7 部署 - 重复的“system.web.extensions/scripting/scriptResourceHandler”部分

    尝试在 IIS7 中的默认应用程序池 框架部分设置为 4 0 上部署 net 3 5 网站时 出现以下错误 有一个重复的 system web extensions scripting scriptResourceHandler 部分 定义
  • go 1.5 跟踪命令

    Go 1 5 发行说明说 新的 go tool trace 命令可以实现运行时中新跟踪基础设施生成的程序跟踪的可视化 这真的很令人兴奋 我想了解更多 但其官方文件位于https golang org cmd trace https gola
  • QAbstractTableModel 并为单行发出 dataChanged

    我从 QAbstractTableModel 派生了一个模型 现在我想通知 整行的数据已更改 例如 如果索引为 5 的行的数据发生更改 4 列 则使用以下代码可以按预期工作 emit dataChanged index 5 0 index
  • 钥匙串上的分发证书中缺少私钥

    我遇到以下问题 在任何地方都找不到解决方案 基本上 我们有一个公司开发人员帐户 不是企业 因此为了提交我们的应用程序 我要求我们的团队负责人向我发送分发证书 并创建并向我发送分发配置文件 使用开发人员配置文件 一切正常 但是当我安装证书和配
  • newtype 如何帮助隐藏任何东西?

    现实世界哈斯克尔说 我们将使用新类型隐藏解析器类型的详细信息 宣言 我不明白如何使用新类型隐藏任何内容 谁能详细说明一下吗 我们想要隐藏什么以及我们如何做到这一点 data ParseState ParseState string L By
  • 可可 NSNumberFormatterCurrencyStyle 没有“$”返回零

    我设置了一个数字格式化程序来将货币字符串转换为十进制值 问题是 如果文本字符串没有前导美元符号 它会转换为 0 而不是有效的匹配数字 所以 3 50 converts to 3 50 3 50 converts to 0 这是转换器的代码
  • 这台机器上似乎运行了太多模拟器实例。正在中止

    当我从 SDK 管理器运行它时 加载过程可以正常工作 但是一旦完成 模拟器就会出现闪烁 然后很快消失 有时加载后什么也没有发生 最糟糕的是 当它加载时 我会收到 太多模拟器实例正在这台机器上运行 正在中止 消息 我想开始制作应用程序 但这似
  • Nuxt Heroku 需要填写什么 baseurl 才能运行?

    这是我的nuxt config js file env baseUrl process env BASE URL http localhost 3000 Axios module configuration https go nuxtjs
  • constexpr 函数内的 if 与 if constexpr

    最近修改了一些if constexpr into if在我的 constexpr 函数中 发现它们仍然可以正常工作并且可以在编译时进行评估 这是一个最小的情况 template
  • 如何通过IIS中的代理来防止跨域问题?

    我有一个用 Delphi 编写的网站 需要从 NET Web 服务获取数据 为了使用 Web 服务 我首先附加到一个 NET 网站 该网站包含最终用户必须填写的向导 然后该向导调用 Web 服务以填充 AJAX 下拉列表并将数据返回到调用
  • 如何更好地表达舵图中需要一个值?

    我现在正在这样做 value required A valid Values foo entry required Values foo 但在我看来 为模板中的所有必需值提供相同的消息很麻烦 而且会使模板变得混乱 是否有更好的方法可以在模板
  • 更改 SVN 存储库 URL

    我当前的SVN结构 Path URL svn someaddress com tr project Repository Root svn someaddress com tr Repository UUID Revision 10297
  • Chrome 更新 - 无法在“URL”上执行“createObjectURL”

    我正在从网络摄像头拍摄图像并将其存储到服务器 一切都工作正常 直到我今天得到 chrome 更新 我最新的 chrome 版本是 版本 71 0 3578 80 64 位 这一行抛出一个错误 camera src window URL cr
  • 如何将 CONCAT_WS 与 IN 一起使用?

    使用Symfony2和Doctrine2 想要将CONCAT WS与IN结合起来 而不是写很多IF WHERE CONCAT WS id2 id2 IN ids 我收到此错误 Syntax Error line 0 col 446 Erro
  • Flask-PyMongo - InsertOneResult 类型的对象不可 JSON 序列化

    我有一个 api 我正在尝试使用 Flask Pymongo 存储 发布用户对象 但是 我收到以下错误 文件 home kay local share virtualenvs server iT4jZt3h lib python3 7 si