gpt4 book ai didi

python - 如何按最新子项中的列过滤 sqlalchemy 查询

转载 作者:太空狗 更新时间:2023-10-30 01:08:15 25 4
gpt4 key购买 nike

我目前有 2 个表,大致描述如下 SQLAlchemy 映射:

class Parent(Base):
__tablename__ = "parent"

parent_id = Column(Integer, primary_key=True)

class Child(Base):
__tablename__ = "child"

child_id = Column(Integer, primary_key=True)
parent_id = Column(Interger, ForeignKey(parent.parent_id))
child_timestamp = Column(TIMESTAMP)

parent = relationship("Parent", backref=backref("children", order_by=child_id))

所以我有从 parent 到 child 的一对多关系。我需要做的是创建一个查询以获取所有父项,其中它们的最新(按时间戳)子项与给定日期范围匹配。

我不能在按日期过滤并在连接中使用它的 Child 表上执行子查询,因为这也会考虑较旧的项目。

有没有一种方法可以构建仅考虑最新子时间的查询,或者我是否只需要在 Parent 上添加一个额外的列来跟踪最新插入的 Child 的 child_id?

感谢您的帮助。

最佳答案

首先,使用子查询获取每个父项的最新子项时间戳。然后查询父级,加入子查询以用于过滤。

sub = session.query(
Child.parent_id,
func.max(Child.child_timestamp).label('child_latest')
).group_by(Child.parent_id
).subquery()

parents = session.query(Parent
).join((sub, sub.c.parent_id == Parent.id)
).filter(sub.c.child_latest.between(lower_date, upper_date)
).all()

关于python - 如何按最新子项中的列过滤 sqlalchemy 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24079957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com