问题标签 [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.
python - 从 Python Marshmallow 中的兄弟字段访问反序列化数据?
我有以下 Python 类和 Marshmallow 模式定义:
正如示例希望说明的那样,我希望有一个数据模型,其中书籍对象包含对作者的引用(而不仅仅是作者 ID),但会被序列化为作者 ID。
显然,序列化不是问题,但是在反序列化时,我需要访问作者列表中已经反序列化的内容。我不知道如何用棉花糖做到这一点。甚至可能吗?当然,在这种情况下,我可以Book
用数字作者 ID 实例化对象并执行@post_load
操作LibrarySchema
以将作者 ID 替换为引用,但这对我来说感觉又脏又笨重。请帮忙。:-)
python - Marshmallow:如何处理未声明的字段?
我正在尝试验证一个包含字符串化整数作为键的字典。这些整数是任意数字 ID,不受我的控制。
我如何在模式中声明它?
也许有一种方法可以声明一个我可以用作包罗万象的默认模式?
谢谢。
marshmallow - 处理可选字段验证
我有一个简单的问题,不确定处理它的最佳方法。我有一个定义如下的模式:
imageUrl
是一个可选字段,有时它会是 None/null。如果发生这种情况,没关系,它不需要是有效的 url。但是当我这样做时:
对于 PUT 的传入数据,url 字段记录错误:Field may not be null.
我认为partial=True
在调用加载中使用会起作用,但事实并非如此。我也不喜欢这样,因为这不是部分对象,而是完整对象,恰好我的一些字段在数据库中可以为空。
如何让棉花糖在它为非空时验证 imageUrl,但在它为空时忽略它?
python-2.7 - 使用 sqlalchemy marshmallow 难以序列化地理列类型
我尝试使用 Marshmallow 进行反序列化和序列化 SQLAlchemy 对象,但在处理 ORM 中的地理字段时遇到问题。
首先是模型:
其次是棉花糖模式:
然后尝试运行时出现错误:
我在位置字段上尝试了一些覆盖,但无济于事。非常感谢任何帮助。
2016 年 1 月 24 日更新
这是我的代码,因为它具有更简单的模型:
SQLAlchemy 模型:
marshmallow_sqlalchemy 模式对象
根据建议的其他管道:
在运行代码时:
我得到的结果是:
python - 嵌套子类的 Python 棉花糖循环问题
我有 3 个带有嵌套字段的棉花糖模式,它们形成了一个依赖循环/三角形。如果我使用双向嵌套的样板,我似乎没有问题。
但是,我有自己的 fields.Nested 薄子类,如下所示:
我将每个模式更改为使用 NestedRelationship 而不是本机Nested
类型,我得到:
NestedRelationship 是一个相对薄的子类,我对行为的差异感到惊讶。我在这里做错了吗?我不恰当地称呼超级吗?
python - 棉花糖中的循环导入
我有两个相互关联的对象。我希望能够通过相关属性通过另一个对象访问一个对象。
例如A.b_relationship.obj.some_property
如何在不创建循环导入的情况下做到这一点?
为了清楚起见,我添加了这个附加示例。backref
显然 SQLAlchemy 已经用属性解决了这个问题。我不确定在不破坏其工作方式的情况下将这种东西实现到棉花糖中有多可行。也许我需要改变我的心态?
python - 使用 Marshmallow 进行序列化优化,其他解决方案
这似乎应该很简单,但是唉:
我有以下 SQLAlchemy 查询对象:
需要序列化输出,如 [{'sid': 1}, {'sid': 2},...]
为此,我尝试使用以下简单的 Marshmallow 模式:
但是,当我这样做时
我得到:
对于我的输出。
但是,当我只从查询中选择一行时,例如,
我得到了想要的结果:
我知道带有 .all() 的查询正在返回数据,因为当我打印它时,我得到一个元组列表:
我假设 Marshmallow 可以处理元组列表,因为在序列化方法下 marshaling.py 的文档中,它说:“获取原始数据(字典、列表或其他对象)和...的字典”但是,这可能是一个错误的假设,认为元组列表可以分类为“列表”或“其他对象”。
否则我喜欢 Marshmallow,并希望将其用作使用迭代方法序列化我的 SQLAlchemy 输出的优化,例如:
其中,对于大型记录集可能需要一段时间来处理。
编辑
即使 Marshmallow 能够将整个记录集序列化为 SQLAlchemy 的输出,我也不确定我是否会提高速度,因为它看起来也迭代了数据。
对 SQLAlchemy 输出的优化序列化有什么建议,除了修改 Clinical 的类定义吗?
python - 用棉花糖序列化日期时间的简短方法
这是我的情况:我在 MSSQL 中存储了一些日期时间,我通过 SQLAlchemy 在我的 python 应用程序中获取了这些日期时间,然后通过 Marshmallow 将其序列化,如下所示:
但是这里的问题是:在序列化之后,我得到类似"started_at": "1994-05-20T00:00:00+00:00"
UTC+0 的信息,但是我将所有日期都存储在 DB 中,没有任何时区信息,而是在 UTC+3 中。
我知道我可以fields.Method()
用来更改输出时区,但它看起来不方便。有什么想法可以让我的序列化程序正常工作吗?)
python - 使用棉花糖序列化对象时如何嵌套一些父对象字段
我正在使用 marshmallow 序列化具有平面结构的 sqlalchemy 对象,例如:
序列化时,我希望 marshmallow 对相关地址字段进行分组,如下所示:
有没有办法让棉花糖在不使用@post_dump 的情况下做到这一点?我知道我可以使用 Nested() 嵌套其他模式,但在这种情况下,我只想从父模式本身嵌套某些列。
python - 使用棉花糖 sql-alchemy 对象时避免 DB Session 添加棉花糖对象
有没有办法避免在使用 Marshmallow 时将数据插入会话 - sqlalchemy
sqlalchemy marshmallow 避免加载到会话中
参考:https ://marshmallow-sqlalchemy.readthedocs.org/en/latest/
因为我们试图自己管理对象。如果需要,将添加到会话中,但为了验证我需要使用load()
为避免此问题的解决方法,在我尝试加载后,我可以调用 DBSession.close()
来忽略临时数据。但是我再次需要让会话将数据刷新到 DB 中。
请指教。谢谢你的帮助