【发布时间】:2016-08-01 18:30:27
【问题描述】:
有没有办法避免在使用 Marshmallow - sqlalchemy 时将数据插入会话中
sqlalchemy marshmallow 避免加载到会话中
参考:https://marshmallow-sqlalchemy.readthedocs.org/en/latest/
因为我们试图自己管理对象。如果需要,将添加到会话中,但为了验证我需要使用 load()
author = Author(name='Chuck Paluhniuk')
book = Book(title='Fight Club', author=author)
session.add(author)
session.add(book)
session.commit()
author_schema.dump(author).data
# {'books': [123], 'id': 321, 'name': 'Chuck Paluhniuk'}
author_schema.load(dump_data, session=session).data
# <Author(name='Chuck Paluhniuk')>
为了避免这个问题,在我尝试加载之后,我可以调用 DB Session.close() 来忽略临时数据。但我再次需要让会话将数据刷新到 DB 中。
请指教。感谢您的帮助
【问题讨论】:
-
这个例子所指的会话不是 Flask 客户端会话实现。此示例所指的会话是 Flask 应用程序与其数据库的会话。
-
是的@Snuggert你是对的。我只是举例。我很好地将会话传递给 marshmallow sqlalchemy 。唯一的问题是在验证后使用 .loads() 时,它会将数据放入 Session 。注意:Marshmallow-sqlalchemy 必须要求将会话从 DB 模型转换为 Marshmallow 模型。
-
@Shankar 您是否考虑过在没有 SQLAlchemy 集成的情况下使用
marshmallow? -
@mam8cc 是的,我们在项目中单独使用棉花糖和 sqlalchemy。我正在寻找集成这些的方法,因为我们需要为 DB 和 REST 服务定义单独的模型。
-
@Shankar 所以您想要一种方法来表示数据库中的数据,但要从您的 API 编组不同的表示?
标签: python flask sqlalchemy flask-sqlalchemy marshmallow