的计数对象可以说我有SQL炼金术ORM类:SQLAlchemy的查询与关系
class Session(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_agent = db.Column(db.Text, nullable=False)
class Run(db.Model):
id = db.Column(db.Integer, primary_key=True)
session_id = db.Column(db.Integer, db.ForeignKey('session.id'))
session = db.relationship('Session', backref=db.backref('runs', lazy='dynamic'))
我想查询主要是:
((session.id, session.user_agent, session.runs.count())
for session in Session.query.order_by(Session.id.desc()))
然而,这显然是1 + n个查询,这很糟糕。有1个查询,这样做的正确方法是什么?在正常的SQL,我会沿着线的东西做到这一点:
SELECT session.id, session.user_agent, COUNT(row.id) FROM session
LEFT JOIN rows on session.id = rows.session_id
GROUP BY session.id ORDER BY session.id DESC
你有看了看ORM教程,具体而言,标记的部分(http://docs.sqlalchemy.org/en/rel_0_8/orm/tutorial.html#querying-with-joins [与加入查询] )? –
是的,我确实看过它,但是我不清楚如何在群组之后进行连接,并在最终列表中添加一个计数。 – WirthLuce