SQLAlachemy advanced count()查询

2024-06-16 12:10:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用烧瓶炼金术。目前我有两个模型参与这个查询:

class Actor(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(255))
    type_id = db.Column(db.Integer, db.ForeignKey('actor_type.id'))
    geo_origin = db.Column(db.String(45))
    type = db.relationship("ActorType")

class ActorType(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(45), unique=True)

所以,我做了这个查询,非常有效:

actors_by_type = (db.session.query(models.Actor.type_id, func.count(models.Actor.id).label("count")).group_by(models.Actor.type_id)).all()

在结果中获取ActorType.titles而不是ActorType.ids的最佳方法是什么


Tags: keyidtruedbstringmodelmodelstype
1条回答
网友
1楼 · 发布于 2024-06-16 12:10:02

试试这个,我不是舒尔关于型号的名字,但它在我的项目中很好

query = db.session.query(models.ActorType.type_id, func.count(models.Actor.id)) \
       .join(models.Actor) \
       .group_by(models.ActorType.type_id)\
       .all()

相关问题 更多 >