2017-10-12 3 views
0

J'utilise sqlalchemy avec flask. À l'heure actuelle, j'ai 2 modèles impliqués dans cette requête:SQLAlachemy advanced count() requête

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) 

Alors, je fais cette requête, qui fonctionne parfaitement:

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

Quelle est la meilleure façon d'obtenir ActorType.titles au lieu de ActorType.ids dans le résultat?

Répondre

0

Essayez ceci, je ne suis pas shure sur le nom des modèles mais il Warks bien dans mon projet

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

Eh bien, on dirait que vous ne l'avez pas lu entièrement la question. –

+0

Oui c'est le cas mais j'ai modifié ma réponse, j'espère que cela vous aidera –