如何从SQLAlchemy中的嵌套关系中快速查询?

2024-10-02 12:38:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我的SQLAlchemy数据库中有以下表格:

DSource表格:

class DSource(Base):
    __tablename__ = 'dsource'

    source_id = Column(Integer, primary_key=True)
    subjects= relationship("Subject")

Subject表格:

^{pr2}$

DSequence表格:

class DSequence(Base):
    __tablename__ = 'dsequence'

    sequence_id = Column(Integer, primary_key=True)
    subject_id = Column(Integer, ForeignKey("subject.subject_id"),nullable=False)
    frames= relationship("Frame")

Frame表:

class Frame(Base):
    __tablename__ = 'frame'

    f_id = Column(Integer, primary_key=True)
    sequence_id=Column(Integer, ForeignKey("dsequence.sequence_id"),nullable=False)
    action_units=Column(String)
    expression=Column(String)
    pts3d=Column(String)
    pts2d=Column(String)

现在,我想对Frame表编写一个查询,该表提供带有source_id=2的所有帧。一种方法是编写一个嵌套循环,用dsource=2检索所有subjects,然后为每个主题找到序列,然后为每个序列找到相应的帧。在

fr=session.query(Frame,Subject,DSequence,DSource).filter(DSource.source_id==2).all()

但是查询具有这些嵌套关系的数据库非常慢,因为在Frame表中,我有大约90000个帧。 有没有什么方法可以让我查询得更快?我不确定joinedload是否能帮我解决这个问题。在


Tags: keyidtruesourcebasestringcolumninteger

热门问题