通过 Marshmallow 使用 @post_dump 添加总行数?

2023-12-23

我需要添加此查询中返回的行数:

queryPostgres = db.text("""
            SELECT *, COUNT(*) OVER () as RowCount
            FROM (
                SELECT * ,
                    ( 3958.75 *
                    acos(sin(:lat1 / 57.2958) * sin( cast(latitude as double precision) / 57.2958) +
                         cos(:lat1 / 57.2958) * cos( cast(latitude as double precision) / 57.2958) *
                         cos( cast(longitude as double precision) / 57.2958 - :lon1/57.2958)))
                    as distanceInMiles
                FROM "job" ) zc
            WHERE zc.distanceInMiles < :dst
            ORDER BY zc.distanceInMiles
            LIMIT :per_page
            OFFSET :offset
        """)

        jobs = cls.query.\
            from_statement(queryPostgres). \
            params(lat1=float(lat1),
                   lon1=float(lon1),
                   dst=int(dst),
                   per_page=int(per_page),
                   offset=int(offset))
        return jobs

如您所见,我添加了 RowCount 列以获取总行数。

然而,由于它不是我的模型的一部分,我想知道我应该在 Marshmallow 中做什么,以便我可以添加行数(在 RowCount 列中)?

我以为我可以用 Marshmallow @post_dump() 来做到这一点,但是我不知道该怎么做。

为了更清楚起见,这是我的架构。

class JobSchema(ma.ModelSchema):

    def validate_state(state):
        """Validate one of 55 USA states"""
        if state not in states:
            raise ValidationError(INVALID_US_STATE)

    def validate_zipCode(zip):
        if not zipcodes.is_real(zip):
            raise ValidationError(INVALID_ZIP_CODE)

    @pre_load
    def get_longitude_for_zipCode_and_TimeCreated(self, data):
        """ This method will pass valids long,lat and time_created
        values to each job created during a POST request"""
        # Getting zip from the request to obtain lat&lon from DB
        result = modelZipCode.getZipCodeDetails(data['zipCode'])
        print(result)
        if result is None:
            raise ValidationError(INVALID_ZIP_CODE_2)
        schema = ZipCodeSchema(exclude=('id'))
        zip, errors = schema.dump(result)
        if errors:
            raise ValidationError(INVALID_ZIP_CODE_3)
        else:
            data['longitude'] = zip['longitude']
            data['latitude'] = zip['latitude']
        data['time_created'] = str(datetime.datetime.utcnow())

    title = fields.Str(required=True, validate=[validate.Length(min=4, max=80)])
    city = fields.Str(required=True, validate=[validate.Length(min=5, max=100)])
    state = fields.Str(required=True, validate=validate_state)
    zipCode = fields.Str(required=True, validate=validate_zipCode)
    description = fields.Str(required=False, validate=[validate.Length(max=80)])
    narrative = fields.Str(required=False, validate=[validate.Length(max=250)])
    companyLogo = fields.Str(required=False, validate=[validate.Length(max=250)])
    companyName = fields.Str(required=True, validate=[validate.Length(min=5, max=250)])
    companyURL = fields.Str(required=True, validate=[validate.Length(min=4, max=100)])
    latitude = fields.Str(required=True)
    longitude = fields.Str(required=True)
    time_created = fields.DateTime()

    # We add a post_dump hook to add an envelope to responses
    @post_dump(pass_many=True)
    def wrap(self, data, many):
        #import pdb; pdb.set_trace()
        if len(data) >= 1:
           counter = data[0]['RowCount']

    return {
        data,
        counter
    }



    class Meta:
        model = modelJob

最奇怪的是我的查询确实正确返回了行数

有人可以帮我找出为什么我无法在 post_dump 方法中捕获 rowcount 键吗?


这需要通过 Marshmallow pre_dump 或 post_dump 方法来管理。但实际上我决定使用 SQLAlchemy 分页方法,因为它为我提供了响应中的总行数。

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

通过 Marshmallow 使用 @post_dump 添加总行数? 的相关文章

  • 如何创建包含多列MD5的GENERATED列?

    我尝试在 PostgreSQL 14 3 中添加下表 CREATE TABLE client cache id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY request VARCHAR
  • Python/curve_fit:无法通过初始化猜测传递数组

    我有这个函数来计算某种多项式 def pipoly df pj n np size pj p pj 0 for j in range 1 n p pj j df j return p pj应该是一个包含多项式系数的初始猜测的数组 因此 多项
  • 拖动数据获取信号发射两次 python gtk3

    我希望源也是目的地 我实现了下面的信号 但拖动数据获取信号触发了两次 第二次 数据变量 在 on drag data get 中 被自动选择的 ListStore 项填充 class DragSource Gtk TreeView def
  • 按工作日对 pandas 数据框进行排序

    如何按工作日名称对 DataFrame 进行排序 我无法使用 pd to datetime 方法 因为我的日期不是数字 Date Transactions 0 Friday 140 652174 1 Monday 114 000000 2
  • 授予用户 ALTER 函数的权限

    我试着ALTER一个新用户的函数 我收到错误 ERROR must be owner of function ACases Error ERROR must be owner of function ACases SQL state 425
  • pyqt4窗口调整大小事件

    我正在使用 python3 和 pyqt4 我希望每次运行时都会运行一些代码QMainWindow已调整大小 我想要这样的东西 self window resized connect self resize but resized不是内置函
  • 测试从常规函数调用 python 协程(async def)

    假设我有一些异步协程 它可以获取一些数据并返回它 像这样 async def fetch data args result await some io return result 基本上 这个协程是从协程链中调用的 初始协程是通过创建任务来
  • 使用 matplotlib 在 python3 中对多个形状进行动画处理

    尝试在 python3 中使用 matplotlib 动画函数同时对多个对象进行动画处理 下面写的代码是我到目前为止的位置 我能够创建多个对象并将它们显示在图中 我通过使用包含矩形补丁函数的 for 循环来完成此操作 从这里开始 我希望通过
  • 返回表情符号名称而不是表情符号

    我有这个 1 不带单引号 在 Python 3 中 即 one 有没有一种方法可以获取表情符号 如上面的 并打印相应的表情符号 在本例中为 one 名称 我从 Discord py 反应对象中获取表情符号 就您而言 该表情符号是一个两个字符
  • 在SQLAlchemy中获取相关模型

    我有各种模型链接在SQL炼金术 http en wikipedia org wiki SQLAlchemy 有很多 属于 等等 有没有办法找到给定实例的相关模型 就像是 usersModelInstance getRelatedTables
  • 使用 importlib 加载已编译的模块

    从 Python 3 4 开始 模块 imp 已被弃用 使得imp load compiled modname modpath 不鼓励的加载字节码的机制 有没有一种简单的方法可以使用 importlib 加载已编译的模块 我正在向学生提供一
  • IndexError:索引 10 超出尺寸为 10 的轴 0 的范围

    我正在以数字方式为 x 网格和 x 向量以及时间网格设置网格 但我再次设置了一个数组x 位置 只能在 0 到 20 之间并且t 时间 将从 0 到 1000 以便求解热方程 但每次我想要 例如 我将步数设置为 10 时 都会收到错误 Tra
  • Python 中维基百科 API 中的 DisambiguationError 和 GuessedAtParserWarning

    我想获得维基百科与搜索词相关的可能且可接受的名称列表 在这种情况下是 电晕 当输入以下内容时 print wikipedia summary Corona 这给出了以下输出 home virej local lib python3 8 si
  • Postgres 按查询分组

    我正在尝试在 postgres 的查询中使用 group by 我无法让它按照我想要的方式工作 以便根据需要对结果进行分组 这是另一个堆栈问题的扩展我刚刚回答过的递归查询 https stackoverflow com questions
  • python名称错误名称未定义

    在 python3 中运行此代码时出现错误名称未定义 def main D create empty dictionary for x in open wvtc data txt key name email record x strip
  • 将 CSV 文件中的数字数据更改为文本

    下面的查询是抓取数据并创建一个 CSV 文件 我遇到的问题是名为 SPLE 的源在数据库中存储数字为 0 1 50 的数据 然而 在 CSV 中 这些数字被收集在 CSV 中 我希望在创建 CSV 时 这些数字能够代表诸如以下的单词 0 T
  • 安装后导入 fastai 库时出现错误

    我想使用 fastai 库来执行文本处理 我的第一份工作安装了 fastai 库 我曾经后来导入过 但是没有任何代码 只是给出导入错误 我正在使用Python 3 5 2 我的操作系统 Ubuntu 16 04 asd py from fa
  • 何时计划 (SELECT) 查询?

    在 PostgreSQL 中 什么时候计划 SELECT 查询 Is it 在报表准备时 或者 在处理 SELECT 开始时 或者 别的东西 我问的原因是 Stackoverflow 上有一个问题 相同的查询 两种不同的方式 性能截然不同
  • Postgres 性能问题

    我们正在运行 Postgres 9 1 3 最近我们的一台服务器开始遇到重大性能问题 我们的查询在一段时间内运行良好 但截至 8 月 1 日 速度显着减慢 看起来大多数有问题的查询都是 Select 查询 带有 count 的查询尤其糟糕
  • 顶级棉花糖模式验证

    From 棉花糖 validation http marshmallow readthedocs org en latest quickstart html validation 我知道我可以在架构中的特定字段上注册验证器 如果验证器失败

随机推荐

  • 正则表达式单词宏找到彼此在一定范围内的两个单词,然后将这些单词斜体化?

    所以 我刚刚开始了解正则表达式 我发现学习曲线相当陡峭 然而 stackoverflow 在我的实验过程中提供了极大的帮助 我想编写一个特定的单词宏 但我还没有找到实现它的方法 我希望能够在文档中找到两个相距不超过 10 个单词的单词 然后
  • 递归重命名文件扩展名

    我很难创建一个 python 脚本来重命名文件夹中的文件扩展名并继续在子目录中执行此操作 这是我迄今为止的脚本 它只能重命名顶级目录中的文件 usr bin python Usage python rename file extension
  • NamespaceContext 以及通过 XPath 使用命名空间

    在 Java 中解析包含名称空间的 xpath 似乎需要使用NamespaceContext对象 将前缀映射到命名空间 url 反之亦然 但是 我找不到任何机制来获取NamespaceContext除了我自己实现之外 这似乎违反直觉 问题
  • xtfrm.data.frame(x) 中的警告:无法 xtfrm 数据帧:在 R 中以数字方式排序数据帧时出错

    我几周前开始学习 R 所以我对 R 编码仍然非常陌生 我试图以数字方式订购数据帧 但在订购的数据帧之上 由于执行函数 order nameofthedataframe 出现 xtfrm data frame x 中的警告 无法 xtfrm
  • 更改 api 上的状态/通知栏颜色低于 21 android?

    我在某些应用程序中看到状态栏颜色可以更改并匹配 api 级别 21 中所做的操作 我搜索并找到了这个解决方案Source https stackoverflow com questions 27093287 how to change st
  • C 编程。 FizzBu​​zz 程序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个测验 我写了这段代码 如果能被 3 整除则打印 Fizz 如果能被 3 整除则打印 Buzz 可被 5 整除 如果是 则打印 Fi
  • GCC 可以忽略函数的静态声明吗?

    在我的应用程序中 我有一个用于伪单元测试的构建配置 这更像是一种手动调试专用功能 在这些单元测试中 我想访问声明为的函数static在他们的翻译单位 GCC 是否有一个选项可以让我打电话static任何地方的功能 我想避免 if UNIT
  • 当 DOM 元素的计算样式发生变化时触发事件?

    有没有非轮询监听元素变化的方法计算风格 https developer mozilla org en US docs DOM window getComputedStyle 这个幻想代码片段应该简洁地解释我的意思 var el docume
  • 在 Google App Engine 上使用异步 urlfetch 启动后端

    我正在尝试 GAE 的几个功能 我已经建立了一个Dynamic后端 但我在让这个东西工作时遇到了几个问题没有任务队列 后端代码 class StartHandler webapp2 RequestHandler def get self d
  • 以编程方式进行角度导航(router.navigate)。错误:无法匹配任何路由

    尝试以编程方式在组件内部导航到另一个路由路径 但出现错误 错误错误 未捕获 承诺 错误 无法匹配任何路由 网址段 有应用程序的下一个结构 app module ts main module ts milestone ts const mai
  • 如何重命名 XML 节点名称

    我想将现有的 XML 节点重命名为新名称 我正在使用 DOM 概念 java 进行 XML 解析 我有一组包含相同名称的节点 例如
  • 我可以通过mysql触发器执行mysql之外的任何程序吗?

    我正在构建电子邮件通知服务 要求是在用户注册时向他发送电子邮件 目前我正在考虑执行触发器中定义的某些函数 可以是一个java函数 它必须在mysql进程之外 而不是从外部监视mysql以在数据库中添加行 mysql 中是否有可用的功能 以便
  • Raspberry Pi Arch Linux 上的 qemu 最新 sd 映像

    我正在尝试设置一个 Arch 图像并使用 qemu 以便在将图像加载到 Pi 之前交叉编译一些东西 我认为最简单的方法是 qemu 最新的启动映像 准备我需要的任何东西 然后在完成后将其添加到 Pi 上 我从以下位置下载了 Arch 图像h
  • Python从元组数组中获取列向量

    我有一个元组数组 来自结构化数组的先前处理 但提交的信息丢失了 gt gt gt arr 0 109 0 5 0 109 0 55 0 109 0 6 gt gt gt 我需要提取第一列和第二列的列向量 使用两个具有固定值的索引可以正常工作
  • 向下拉列表框中添加新值

    我有一个下拉列表框 其中一个值为其他值 我想把这些值移到最后 请在这件事上给予我帮助 我正在使用的代码如下 ddlAssetsCountryOthersone DataSource lstIMAssetsByCountryOthers dd
  • 使用 gmp mpf_class 进行近似

    我正在使用 Catch2 编写单元测试 我想检查两个向量是否相等 使用 gmplib 时它们看起来如下所示 std vector
  • Matlab12b函数imshow()的困难

    我正在使用 MATLAB 进行图像处理 并且遇到了带有指令的代码 imshow pixel labels 执行时它给出一个二进制图像 我在Mathworks com上查看了该函数的手册 最相似的使用模式是 imshow I low high
  • Linux如何确定下一个PID?

    Linux 如何确定进程的下一个 PID 这个问题的目的是为了更好的理解Linux内核 不要害怕发布内核源代码 如果 PID 是按顺序分配的 Linux 如何填补空白 当它到达终点时会发生什么 例如 如果我从 Apache 运行一个 PHP
  • 如何同步多个 iframe 的滚动位置

    我有一个基于选项卡的 HTML 布局 比如 5 个 在每个选项卡中我加载一个 iframe iframe 内容是彼此不同的变体 用户可以通过切换选项卡进行比较 在 javascript 中 如何同步所有 iframe 的垂直和水平滚动 换句
  • 通过 Marshmallow 使用 @post_dump 添加总行数?

    我需要添加此查询中返回的行数 queryPostgres db text SELECT COUNT OVER as RowCount FROM SELECT 3958 75 acos sin lat1 57 2958 sin cast la