首页 > 解决方案 > 限制 selectinload SQLAlchemy 关系上的返回记录

问题描述

根据这个类似的帖子提出这个问题,但是关于 SORT ORDER 我知道您可以在关系中更改为lazydynamic然后这将允许您在加载之前查询关系,但是有没有办法直接限制返回结果一种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')

标签: pythonsqlalchemymarshmallow

解决方案


推荐阅读