SQL Alchemy

时间:2015-07-09 09:49:54

标签: python sorting sqlalchemy

我将SQL Alchemy的Declarative flavor与PostgreSQL数据库一起使用。我有ClaimAccount来管理Claim个对象。类似的东西:

class Claim(MyBase):
    manager_id = Column(UUID, ForeignKey(ClaimAccount.id))
    manager = relationship(ClaimAccount, backref='claims')
    created = Column(DATE)

现在,如果aClaimAccount,则a.claimsClaim的列表。这很好,但我希望它按created列排序,因为我总是想按照从最旧到最新的顺序迭代.claims。当然我可以在Python中对它进行排序,但如果Postgres为我做的那样可能会更好(更清晰,更快,更干,更方便)。

起初我认为答案是将collection_class设置为与某些PriorityQueue或SortedList之间的关系,或者其他什么,但现在我认为它只会影响声明如何填充到Python数据结构中,而不是如何从数据库中获取。此外,文档说“在大多数情况下,您不需要自定义集合实现”(但是,那里提到的案例不包括我的,似乎)。

您对如何做到这一点有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以为关系指定order_by参数。因为订单适用于backref,所以你可以这样做:

manager = relationship(ClaimAccount, backref=backref('claims', order_by=Claims.created.desc()))

另请参阅Ordering List extension