SQLAlchemy通过子查询检索一个实体

2024-04-24 08:09:33 发布

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

如何指示SQLAlchemy加载一对多关系?我可以加入它们,但这会导致重复和(取决于结果的大小)大量开销。理想情况下,我希望以某种方式修改session.query,以便发送多个(两个)查询来检索父实体及其所有子实体。如何通过配置SQLA或扩展会话类来实现这一点?或者这不是SQLA中常用的方法。。。在


Tags: 方法实体sqlalchemy关系session方式情况query
1条回答
网友
1楼 · 发布于 2024-04-24 08:09:33

一对多关系通常是通过在Parent(,,One“”)类中创建一个list属性,在Child(,,many“”)类中创建Parent_id backreference(请看这里:here)。在

所以通常创建父类:

class Parent(Base):
  __tablename__ = "parents"
  dbid = Column(Integer, Sequence("parent_seq"), primary_key=True)
  children = relationship("Child", order_by = "Children.dbid", backref = "_parent")

  def __init__(self, children = [])
    self.children = children  #remember to initialize children as list!

儿童班:

^{pr2}$

如果要将子对象添加到父对象,请这样做:

^{3}$

然后,如果您想加载parent及其所有子元素,只需加载带有session.query(...)的父对象,并且子对象会自动加载,则不必进行任何连接,除非您希望仅加载其子级具有特定属性值的父级。在

希望有帮助。如果有什么不清楚的地方,请写评论-我会尝试编辑我的答案来说明。在

相关问题 更多 >