Python SQLAlchemy查询,按计数连接关系和顺序

Python SQLAlchemy查询,按计数连接关系和顺序,python,sqlalchemy,flask,flask-sqlalchemy,Python,Sqlalchemy,Flask,Flask Sqlalchemy,我有两个SQLAlchemy模型,设置如下: ############## # Post Model # ############## class Post(db.Model): id = db.Column(db.Integer, primary_key = True) title = db.Column(db.String(250)) content = db.Column(db.String(5000)) timestamp = db.Column(db.I

我有两个SQLAlchemy模型,设置如下:

##############
# Post Model #
##############
class Post(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    title = db.Column(db.String(250))
    content = db.Column(db.String(5000))
    timestamp = db.Column(db.Integer)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    likes = db.relationship('Like', backref = 'post', lazy = 'dynamic')

###############
# Likes Model #
###############
class Like(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    voter_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
正如你所看到的,有一个帖子模型和一个用户喜欢的帖子模型。我想创建一个查询,选择所有帖子,按照帖子的喜欢度排序。在shell中,我可以运行:

SELECT post.*, 
       count(like.id) AS num_likes
FROM post
LEFT JOIN like
ON post.id = like.post_id
GROUP BY post.id;
什么是等效的SQLAlchemy命令


谢谢

从原始查询到炼金术的转换非常机械:

db.session.query(Post, db.func.count(Like.id)).outerjoin(Like).group_by(Post.id)

SQLAlchemy对ORM有很好的帮助,包括一节。您还可以查看,看看它有一个方法。在SQLAlchemy中创建这个查询时,您有什么特别的问题吗?谢谢,这就是我想要的!我稍微修改了它,以便可以使用Flask-SQLAlchemy-BaseQuery-paginate方法:Post.query.outerjoinLike.group\u byPost.id.order\u bydb.func.countLike.id.desc,Post.timestamp.desc.paginatepage\u num,10,False,但大致相同。再次感谢!不,这令人困惑