gpt4 book ai didi

python - 如何从 SQLAlchemy 获取最新对象

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:02 25 4
gpt4 key购买 nike

我有一个表,其中包含另一个表(任务)中实体的多个修订。因此,每个 TaskRevision 行都有一个唯一的自动增量 id 和对任务 id 的引用。

如何找到所有任务的最新版本?我尝试过:

session.query(TaskRevision.id).order_by(TaskRevision.task_id).filter(TaskRevision.id==func.max(TaskRevision.id)).all()

session.query(TaskRevision.id).group_by(TaskRevision.task_id, TaskRevision.id).having(TaskRevision.id==func.max(TaskRevision.id))

最佳答案

这有点烦人,但取自 this question :

subq = session.query(TaskRevision.task_id, func.max(TaskRevision.id).label("max_id")) \
.group_by(TaskRevision.task_id).subquery()
session.query(Task) \
.join(subq, Task.id == subq.c.task_id) \
.join(TaskRevision, TaskRevision.id == subq.c.max_id) \
.with_entities(Task, TaskRevision)

如果您只需要 ID,则可以跳过第二步。

因为这有点烦人,我通常更喜欢反规范化并在 Task 上保留 latest_task_revision_id 列。

关于python - 如何从 SQLAlchemy 获取最新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37848018/

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