问题标签 [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.
python-3.x - 如何序列化 PostgreSQL JSONB 列。?
我创建了一个烧瓶 Web API 来访问来自 postgresDB 的数据。用于flask_sqlalchemy
创建数据库模型,例如
并使用flask_marshmallow
,添加了对将结果类的实例序列化为 JSON 数据、反序列化 JSON 数据并从中创建结果类实例的支持
我为从结果表中获取一行而创建的端点:
我收到以下回复:
问题是我JSONB
在示例stats
列中声明的列没有序列化为纯 JSON。我将如何实现它?
期望的结果是:
仅供参考,其他列,例如db.Column(db.ARRAY(db.Float)))
正在序列化,但不是db.Column(JSONB))
json.dumps(json.loads(result_exist.stats))
在获得诸如or
之类的 python 对象后,我尝试使用简单的序列化
json.dumps(json.loads(data['stats']))
,但它只是清除了额外的空格而不是分隔符。
有没有不使用字符串操作但使用flask_marshmallow
or来解决问题的标准方法marshmallow
?
flask - 防止棉花糖查询数据库
我想完全阻止棉花糖查询数据库。
在解释性代码片段下方
我已经使用SQLALCHEMY_ECHO = True
. 现在可以从日志中看到这一点
如您所见,有两个数据库select
查询,一个来自我的资源,另一个来自 Marshmallow。
当我更新我的模式实例时,就像created_data = FooSchema(only="name",)).dump(created)
来自 Marshmallow 的查询一样消失了,我想要的内容如下所示。
我想知道是否有一种优雅的方法来告诉棉花糖不要查询数据库并使用实例上的可用数据进行反序列化。我正在从事大型项目,这现在是有问题的,因为 Marshmallow 可以查询许多关系的不需要的数据,从而导致请求超慢。
任何建议、文档推荐或提前将不胜感激。
python - 使用 Flask-Marshmallow 和 SQLAlchemy 的空 Json
我正在尝试创建一个端点以从两个表指示器和元数据返回数据,因此我创建了下面的模型indicator = db.relationship('Indicator', backref='metadatas')
,indicator_id = db.Column(db.Integer, db.ForeignKey('indicator.id'))
但是当我调用它时,api/indicators
我得到了空的 json,正如您在最后看到的那样,为什么?
模型.py
您可以在下面看到其他文件:
应用程序.py
控制器.py
当我调用时,/api/indicators
我得到响应200
但 JSON 为空:
python - 使用 Postman 使用棉花糖验证在 postgresql 数据库表的列中传递整数数组
我在表中models.py
的列中有以下代码。selected_serives
User
注意,selected_services
列是ARRAY
整数列。当我通过Datagrip
. 对于Marshmallow
字段验证,它写为:
现在,我必须发出一个PUT
请求,将整数数组放入正文中,并将它们放入selected_services
数据库的列中。
现在的问题是,当我在正文部分尝试PUT
来自邮递员的请求时,我无法selected_services
以数组形式传递值。它只接受单个整数。{1,2,3}
并且[1,2,3]
不起作用。当我尝试这样做时,它会引发以下错误:
我在这里做错了什么?也许我不应该创建一个 ARRAY 列,而是应该创建一个 JSON 字段,或者我做棉花糖验证错了吗?或者,我是否以错误的方式传递数组的值?任何形式的帮助或建议将不胜感激。
python - 如何在 Flask Marshmallow 中验证 Fields.Raw
我正在尝试设置一个通过 POST 方法接受图像的 Web 服务。我正在使用 Python Flask 和 Flask-Apispec 创建 Swagger 文档。因此,我包含了这个 Marshmallow Schema 来定义接受哪些参数:
我现在还想记录只接受 png 图像并在 Marshmallow 中验证这一点。
因此,我尝试设置验证器
但是,此代码的控制台输出很简单
所以value只是一个内容为“[object File]”的字符串,而kwargs是空的。如何访问提交的文件以检查其名称?或者,我可以通过什么其他方式验证 Marshmallow 中的文件上传?
python - 棉花糖转储缺少 1 个必需的位置参数:'obj'
由于某种原因,此代码会产生以下错误,我无法弄清楚原因。据我所知,在我遵循的指南中,dump 的调用方式与谷歌搜索没有结果,尤其是因为这似乎是 json.dump/json.dumps 也可能产生的错误消息。任何帮助将不胜感激。
如果使用 .dump 而不是 .dumps,则错误是相同的。不在 jupyter 笔记本中时,错误保持不变。
marshmallow - 烧瓶棉花糖从嵌套字典中删除键
我有以下架构:
当我转储 JournalSchema 时,我希望结果是:
但现在它转储为:
如何嵌套发布者值但不显示密钥?
flask - Marshmallow 嵌套关系超出一层深度
我在棉花糖中有以下模式,这些模式依赖于用 sqlalchemy 构建的模型。我能够显示一个 API 响应,其中包含多个订阅价格,这些订阅价格来自名为“subscription_prices”的 Journal 模型的多对多关系。
但是,我想做的是添加一个名为“出处”的字段,该字段与订阅价格处于同一水平。所以我试图这样做,但它不起作用:
似乎关系 'subscription_prices' 没有传递超过一个级别,因此它没有达到新的 SubscriptionSchema。关于如何完成这项工作的任何想法?
rest - 通用 REST API:在一个请求中插入父项和子项
我正在构建一个具有或多或少复杂资源的 REST API。
假设,我在幕后有以下数据库结构。
父基:id|name
ChildBase:id|name|parentId
因此,显然 childBase 的“parentId”列是 ParentBase 的 id 字段的外键。
是否允许在一个发布请求中与其父级创建一个子级并管理关系服务器端。我的有效载荷如下所示,网址为“/api/parents”:
还是我必须先使用自己的发布请求创建父级,然后获取返回的 id,将其设置为孩子的 parentId 并与孩子进行第二次发布请求?所以发送到 url “/api/parents”:
现在我得到了 Homer 的 id=35,我可以用有效载荷向“/api/children”发送第二个请求:
那么什么是最佳实践呢?
(我正在使用带有 sqlachemy 和 marshmallow 的烧瓶。所以也许你也有提示如何使用这些框架解决这个任务)
python - 在棉花糖序列化程序中动态过滤嵌套属性的字段
我想在我的棉花糖序列化器中实现字段的动态过滤
例如,我有一个函数可以从我的序列化程序中接收我想要的字段:
在棉花糖中,这适用于第一级嵌套字段(例如,,orders.prop1
。orders.prop2
现在我想要进一步指定嵌套属性中的字段orders
。类似orders.items.id
我注意到这在棉花糖中不起作用,所以我想就如何在不更新序列化程序类的情况下实现这一点征求意见。这是序列化程序类顺便说一句:
基本上,我希望我的序列化程序返回所有/所有字段,并且我将在调用函数中动态指定我的字段,而不管我传递了多少嵌套字段。