添加自定义列

时间:2013-01-29 22:49:54

标签: python sqlalchemy

所以我有一个问题......

qry = Query(models.UserList).filter(...)

models.UserList包含一个mixin方法,该方法将返回相关表的count

所以我想做的就是......

qry = qry.order_by(models.UserList.contactCount)

然而,这当然会产生无效的sql。

那我该怎么办呢

qry.add_column((this.contactCount).label("contactCount"))

this.contactCount只是糟糕的伪代码,但希望你明白这一点。

我一直在研究如何做这件事,但sqlalchemy doc不是最容易找到的东西。

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

您可以使用column_propertyhybrid_property。例如:

class UserList(Base):
    ...
    contactCount = column_property(
        select(
            [func.count()],
            contact_id == Contact.id,
        ).label('contactCount'),
        deferred=True,
    )