问题标签 [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 投票
1 回答
1702 浏览

python - 使用 Flask 的 url_for 在 URL 中生成列表

我正在使用 webargs 从request.argsMarshmallow 中解析参数并将它们作为参数传递给 Flask 视图。我的客户使用逗号分隔的列表来表示一个键的多个值:

为了解析这个,我使用 Marshmallow 的DelimitedList字段。

但是,如果我使用 Flask's 生成 URL url_for,它会为每个值生成重复的键:

DelimitedList字段解析它只会捕获第一个值。更改为List正确的字段会再次捕获值。所以要么我的 Flask URL 失败,要么我的客户端 URL 失败。

我无法更改客户端生成 URL 的方式,所以我想坚持使用DelimitedField. 我怎样才能url_for生成相同的样式?

0 投票
1 回答
6594 浏览

python - Marshmallow 允许为一个值保留 none,但不清除该值

我想温和地强制用户群中的用户设置一个以前不需要但现在需要的值。

这是设置

从数据库中获取的用户会根据数据库绑定的棉花糖模式进行验证,这允许 None 值。

新用户根据不允许 None 的棉花糖模式进行验证。

已编辑的用户将根据另一个棉花糖模式进行验证,这是棘手的部分。

我希望不设置该字段也可以,如果以前未设置,但一旦设置,您应该无法将其删除。

这是如何在棉花糖中指定的?

0 投票
1 回答
2626 浏览

python - 用 Peewee 和 Marshmallow 序列化多对多关系

我有一个带有多对多用户的 PostgreSQL 数据库,以标记与下表的关系:

  • social_user:用户信息
  • 标签:标签信息
  • user_tag:social_user标签之间的多对多关系

我正在尝试使用 Flask、Peewee 和 Marshmallow 构建一个简单的 API 来访问该数据库中的数据。我们现在可以忽略 Flask,但我正在尝试为social_user创建一个模式,它允许我转储一个查询,该查询返回一个或多个用户及其各自的标签。我正在寻找类似于以下内容的响应:

我已经设法通过在 @post_dump 包装函数中包含第二个查询来拉取social_user模式中的标签来做到这一点,但是,这感觉像是一种黑客行为,而且对于大量用户来说似乎会很慢(更新:这很慢,我在 369 个用户上测试过)。我想我可以用 Marshmallow 的fields.Nestedfield type做一些事情。有没有更好的方法可以只用一个 Peewee 查询来序列化这种关系?我的代码如下:

皮威模型

棉花糖模式

以下是一些演示功能的测试:

0 投票
2 回答
3191 浏览

python - Flask-Marshmallow 的 init_app() 真的有必要吗?

Flask-Marshmallow 文档有这样的说法Marshmallow.init_app()

使用扩展名初始化应用程序。

它背后的代码似乎做了一些与 SQLAlchemy 会话管理相关的重要事情:

但是我一直在使用和开发我的应用程序一段时间,但没有包括对init_app任何地方的调用,而且它似乎工作得很好。我正在使用 SQLAlchemy、Flask-SQLAlchemy 和 Marshmallow-SQLAlchemy(以及 Flask-Marshmallow)。

我不做会导致什么问题ma.init_app(app),为什么一切似乎都正常?

目前,我有一个database和一个schema模块;database看起来像这样:

像这样schema

在我的顶层__init__.py,我正在这样做:


这是一个 MVCE(放入mvce/__init__.py,运行PYTHONPATH=. FLASK_APP=mvce flask run,然后向 localhost:5000 发出 POST 请求,并将name表单字段设置为某个值,然后发出 GET 请求以查看Customer是否正确提交到数据库):

0 投票
1 回答
4601 浏览

python - is not JSON serializable

i'm creating an API in python + Flask + marshmallow. Here's the class + the first function (i don't already use the others )

import datetime
from marshmallow import Schema, fields, 

i'm creating an API in python + Flask + marshmallow. Here's the class + the first function (i don't already use the others )

I tested the function add_User using Postman with this json request :

and i got this error:


Couldn't read row 0, col -1 from CursorWindow

Is saying that for row 0 (the first row in the cursor), it cannot read index(offset) -1. Index 0 is the first coulmn, 2 the 2nd etc. So you are tring to access a non-existant/impossible column.

However, the getColumnIndex method will return -1 if the column name passed to the method cannot be found as a column name.

Therefore one of these does not resolve/equate to a column name.

You could determine which by commenting out each line in turn. Alternately you could add the following after the line cursor = getContentResolver().query(uri,null, selection,null, null); :-

This will display the columns in the cursor followed by the columns that you are expecting to be in the cursor. One of the latter 3 will not be in the Found column = ????????. That will be the cause of the -1.

0 投票
1 回答
1377 浏览

python - 将 Flask-Marshmallow 与 marshmallow-jsonapi 结合使用

概述

我正在使用 Flask-SqlAlchemy,现在我正在研究棉花糖来帮助我序列化和反序列化请求数据。

我能够成功:

  1. 使用Flask-SqlAlchemy创建我的模型

  2. 通过使用可选的 Flask-SqlAlchemy 集成,使用Flask-Marshmallow使用相同的模型序列化数据库对象

  3. 使用marshmallow-jsonapi快速生成符合 Json API 的响应。这需要我声明新的 Schema以指定我想要包含的属性(这与 Flask-SqlAlchemy 模型重复)

代码示例

Flask-SqlAlchemy 声明式模型

flask_marshmallow 模式声明(继承自 SqlAlchemy 模型)

marshmallow_json api - 需要新的模式声明,必须包含每个属性和手动类型

问题

如代码所示,marshmallow-jsonapi允许我创建符合 json api 的响应,但我最终不得不维护一个声明模型 + 模式响应模型。

flask-marshmallow允许我从 SqlAlchemy 模型创建 Schema 响应,因此我不必为每个模型维护一组单独的属性。


问题

是否可以一起使用flask-marshmallowmarshmallow-jsonapi 1. 从 SqlAlchemy 模型创建 Marshmallow Schema,自动生成 json api 响应?

ma.ModelSchema我尝试在两个命令中创建从and继承的 Schema 声明marshmallow_json.Schema,但它不起作用(引发缺少方法和属性的异常)


棉花糖-jsonapi

marshmallow-jsonapi 提供了一种在任何 Python Web 框架中生成符合 JSON API 的数据的简单方法。

烧瓶棉花糖

Flask-Marshmallow 包含用于与 Flask-SQLAlchemy 和 marshmallow-sqlalchemy 集成的有用附加功能。

0 投票
0 回答
611 浏览

python - 如何在 Marshmallow 中创建嵌套的 json 模式?

我正在尝试从 SQL Server 中的表中获取数据并将其转换为 JSON 格式。我使用 Marshmallow 实现了向基本 JSON 格式的转换。我没有广泛使用 JSON。要求是将其转换为分层 JSON 格式,如下所示:

所需的 JSON 格式:

我已经从表中读取数据,创建了一些函数并实现了这种格式:

样本实现格式:

由于这涉及根据值对数据进行分组,因此我无法弄清楚如何进行。请帮忙。

0 投票
1 回答
645 浏览

python - 是否可以将 Postgres Interval 数据类型与 Marshmallow 模式序列化一起使用?

SqlAlchemy 支持这样的Interval 数据类型

是否可以使用 Marshmallow 模式序列化间隔列类型?我希望得到类似以下的东西:

...但是Marshmallow 不支持区间数据类型。Marshmallow API 文档提到了其他原始数据类型和字符串,但到目前为止我还不能让它工作。

感谢您提供任何提示或建议。

0 投票
1 回答
481 浏览

python - 验证 Marshmallow 中的字段,但不要反序列化它

我正在尝试基于模型构建 Marshmallow 架构,但带有一个附加字段。虽然这似乎通过自行声明特殊字段然后设置meta.model为我分配的模型来工作,但我无法找到解决方案以使附加字段得到验证(它被标记为必需),但在结果中没有出现,反序列化的对象。

我尝试将其设置为excludedand dump_only,但无济于事,要么验证不发生,要么反序列化的对象还包含附加字段(然后与我的 ORM 冲突)。

0 投票
1 回答
716 浏览

python - 内部类作为棉花糖中的嵌套模式?

是否可以在 Marshmallow ( https://marshmallow.readthedocs.io/en/latest/ )中使用内部类作为嵌套模式?

我试图在棉花糖中表示一个分层模式,这似乎是通过嵌套模式完成的。例如,我有一个Method对象,它有一个Params属性,它本身就是一个对象。我可以将其表示为:

我想做的是:

但这失败并出现错误:

找不到名为“MethodSchema.MethodParamsSchema”的类。您可能需要导入该类。

我想这样做的原因是因为我的模式是相当分层的,我想将相关项目组合在一起。有没有办法做到这一点?