1
別のテーブルにあるエンティティのリビジョン数を含む単一のテーブルがあります(作業)。したがって、各TaskRevision行には、一意の自動インクリメントIDとタスクIDへの参照があります。SQLAlchemyから最新のオブジェクトを取得する方法
すべてのタスクの最新リビジョンを確認するにはどうすればよいですか?私が試してみました:
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))
ありがとうございました!そして、Task.latest_revision_idを使って、それに参加するだけですか? – timbo
@imbo yep、前者の場合のようにサブクエリに結合するよりはるかに簡単です。 – univerio
私はlatest_revision_idの列を追加することもまた別の問題を提起し、それがこの値の一貫性を維持する方法だと思います。いくつかの考えの後では、新しいリビジョンを作成し、このコラムを更新することは、同じトランザクション(つまりSession)内で行われなければならないので、矛盾の可能性は存在しないように見えるはずです。 – timbo