问题标签 [flask-marshmallow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
471 浏览

python - 用棉花糖序列化对象时如何对字段进行分组?

问题

使用 Marshmallow 序列化平面结构的 SQLAlchemy 对象时如何将字段组合在一起而不更改后台的平面数据结构?

例子

假设 Flask 应用程序中有一个 SQLAlchemy 模型,如下所示:

如何序列化这个对象,以便x嵌套ycoordinates中,同时在后台(模型)中保持平面数据结构?输出应如下所示:

问题之所以出现,是因为我使用带有选项的Data架构。many=True初始化大致是:


解决方案候选者

所以这是我迄今为止尝试过的,但它们似乎都没有奏效。

创建第二个架构

添加第二个模式并Data从之前修改模式会产生:

有了它会引发必须遍历每个Data项目并手动添加Coordinates架构的问题。我的数据来自返回Data对象列表的 SQLAlchemy 查询,因此我可以使用schema_datas.

使用fields.Dict

由于 Marshmallowsfields模块提供了字典,所以我也尝试过。

似乎也不起作用,因为 MarshmallowData.xData.y使用schema_datas.dump().

使用自嵌套

最合乎逻辑的解决方案是自嵌套。但是(根据我阅读文档的理解)自嵌套仅指在对象中嵌套一个或多个其他实例。我想嵌套同一个实例。

但不幸的是,这也没有奏效。

使用装饰器@pre_dump

Marshmallow 的 Github 页面上这个问题的启发,我尝试使用@pre_dump装饰器来达到预期的结果,但又失败了。

但我无法弄清楚如何正确地做到这一点......


所以我的问题是,我做错了什么,我该如何解决这个问题?

0 投票
1 回答
754 浏览

python - 为什么 Marshmallow 对多个项目返回空但返回单个项目?

我正在使用 Flask 和 marshmallow 构建一个 API 来格式化查询结果,但由于某种原因Filter.query.all()返回空,但是当我用它替换Filter.query.first()它时返回第一个过滤器。我还仔细检查了我的数据库以确保存在多个条目。我在这里做错了什么吗?

返回:

Filter.query.first()返回:

0 投票
2 回答
1135 浏览

python - flask-sqlalchemy 外连接的 Flask-marshmallow 转储返回空

我有两个表,PackMatData 和 ColorData:

我想加入这些表,然后序列化返回的值。我正在使用 flask-sqlalchemy 左外连接对 PackMatData 表的 id 执行连接:

从联接中,我以元组列表的形式获得了我期望的数据:

我在 stackoverflow flask-marshmallow 中读到了一个模式中的两个 db 对象,marshmallow 需要一个字典列表,这就是为什么我在将其传递给转储之前进行转换的原因。

以下是我为序列化定义的模式:

问题是转储函数总是返回以下内容:

我也尝试了这个模式(结果相同):

你能引导我走向正确的方向吗?抱歉,这篇文章很长,但我想尽可能多地为您提供详细信息。

0 投票
1 回答
1097 浏览

python - raise ValueError("反序列化需要一个会话")

确实是我正在处理的一个非常奇怪的错误。奇怪的是,当我在 pyCharm 的 localhost 上运行同一个项目时,它运行良好,但是,当我将所有文件上传到 EC2 服务器时。我收到以下错误。

该项目运行良好,因此我能够托管应用程序,但是当我发送发布请求时,我收到 HTTP ERROR CODE 500 作为响应并在控制台中出现以下错误。

如果有人可以帮助我纠正这个问题,我将不胜感激

在我的应用程序中,这是错误开始的地方。

0 投票
1 回答
205 浏览

flask - 将 2 个具有 1:1 关系的模型组合成一个没有嵌套的方案?

我目前有 2 个模型,它们以 1:1 的关系关联,它们将始终一起显示。这些模型通过一个共同的 PK 链接。我创建了两个模型,它们使用flask-sqlalchemy 映射到他们的表。我将在下面制作一个简化版本:

然后我可以使用烧瓶棉花糖进行序列化:

这对单个方案很有用,我知道您可以使用嵌套,但它不是我想要创建的格式。如果我将作者嵌套在书中,它会产生如下输出:

我见过使用模型外键的其他解决方案,它们产生与上述类似的结果。但是,我试图让它像这样序列化:

这两个模型知道在“键”上合并并合并为一个。这会在实际模型中完成吗?还是在计划中?我搞不清楚了。我也认识到您可以手动执行此操作并设置字段,但我想找到一种更好的方法,因为我将执行获取所有端点并且不希望在所有模型上进行迭代。有任何想法吗?

0 投票
0 回答
595 浏览

python - Flask SQLAlchemy Marshmallow 一对多关系

所以我很难用标题中的技术解决我的问题。

我有几个玩家加入了一个游戏。所以一个游戏有很多玩家。我正在使用 python flask、带有 sqlite 后端的 sqlalchemy 和 marshmallow 进行编组。

这些是相关文件:

database.py - 初始化数据库

这是我的播放器模型和架构:

这是我的游戏模型和架构:

因此,如果在我的播放器模型中使用代码中的行标记为“这将正常工作”的模式,我可以解决关系。但是随着我将继续实现与玩家相关的其他关系,例如个人资料图片,我将根据我在游戏模式中所做的更改玩家模式,从而导致此堆栈跟踪:

有人可以向我指出如何改变以使其正常工作的大致方向吗?

在此先感谢,最好的问候,帕特里克

0 投票
2 回答
7962 浏览

python - sqlalchemy.orm.exc.UnmappedInstanceError:类'builtins.dict'未映射

我正在尝试使用 SQLAlchemy 和 Marshmallow 将新用户插入数据库。该user参数是从 API 端点接收的。一切正常,直到我到达create函数中的这一行:

此时new_user变量的值是:

功能:

楷模:

架构:

我认为相关的部分控制台错误:

我不确定为什么会抛出该Class 'builtins.dict' is not mapped错误。有小费吗?

0 投票
1 回答
1445 浏览

python - AttributeError:“DummySession”对象在使用 Click/Flask 加载 M2M 模式时没有属性“query”

我正在使用应用程序工厂模式,并且我有一个与 M2M 关系中的类别相关的文章对象。到目前为止,API 中的所有路由都按预期工作。我可以通过 POST MethodViews 创建带有类别的文章。

但是,我正在尝试通过单击单独的文件将一些示例数据播种到我的数据库中。起初我认为问题出在 Flask CLI 和应用程序上下文,我最初在蓝图中有,但后来我意识到问题更深了一些。我看到了这个问题,但我已将我的 Marshmallow/Flask-Marshmallow/Marshmallow-Sqlalchemy 更新到最新版本:

https://github.com/marshmallow-code/marshmallow-sqlalchemy/issues/20#issuecomment-136400602

// 模型.py

// 架构.py

// 资源.py

// initialize.py (在根目录)

// 错误

0 投票
1 回答
630 浏览

python - SQLAlchemy & SQLAlchemySchema GET 返回 jsonified 数据为空字典

这是我的模型:

这是我的路线

当我做一个循环时,它看起来像这样:

您可以print在评论中看到它背后的语句的输出。所以我想要的是从我可以返回的数据对象中创建一个 JSON 对象。输出结果为空字典的原因是什么?有没有像这样的简单解决方案

0 投票
1 回答
108 浏览

flask - 自动合并来自两个表的信息

我有两个表 Materials 和 MaterialSubFamilies,它们的定义如下:

查询 Materials 表后,我使用 Marshmallow 使用此模式将其转换为 dict:

我得到的是这样的:

但是,当我获取 Materials 字典时,我想要的不是 SubFamily 的 id,而是直接的名称(sub_family 字段中的字符串)。所以这是一种我希望在每次查询 Materials 表时自动进行的连接。这样的事情可能吗?谢谢