python - 限制 selectinload SQLAlchemy 关系上的返回记录
问题描述
根据这个类似的帖子提出这个问题,但是关于 SORT ORDER
我知道您可以在关系中更改为lazy
,dynamic
然后这将允许您在加载之前查询关系,但是有没有办法直接限制返回结果一种selectin
或一种其他加载技术?
用例是,我试图将记录传递给 Marshmallow 并限制返回的嵌套记录的数量。dynamic
那时不起作用,因为 Marshmallow 将其包含为一个all()
并且selectin
似乎只是在加载时将其包含在不可查询的范围内,并且 Marshmallow 再次获得了整个记录集。
from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class Example(Base):
__tablename__ = 'examples'
id = Column(Integer, primary_key=True)
related_items = relationship('RelatedItem', back_populates='example', order_by='RelatedItem.id')
class RelatedItem(Base):
__tablename__ = 'related_items'
id = Column(Integer, primary_key=True)
example_id = Column(Integer, ForeignKey('examples.id'), nullable=False)
example = relationship('Example', back_populates='related_items')
解决方案
推荐阅读
- web-services - 阿帕奇最大连接数
- javascript - 为什么 Prettier 不格式化 VS Code 中的代码?
- node.js - Swagger:跳过未知类型“dateTime”
- javascript - 如何使用 javascript/jquery 以编程方式单击第一个 li 元素?
- reactjs - 同一组件Reactjs中的多个OnClick
- javascript - 删除模态中动态创建的 div 而不在数据提交时关闭它
- excel - 如何使用apache poi在excel单元格之间求和
- java - nanoTime 方法考虑什么样的时间?
- vba - 宏:如果满足条件,则复制粘贴单元格
- sql - 计算多条记录的时间跨度