SQLAlachemy高级count()查询

时间:2017-10-12 12:56:39

标签: python mysql sqlalchemy

我正在使用sqlalchemy和烧瓶。目前我有2个模型参与此查询:

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的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

试试这个,我对模型的名称不感兴趣,但它在我的项目中表现得很好

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