如何使用sqlalchemy找到每个“n”的最新条目

时间:2013-12-06 08:16:59

标签: python mysql sqlalchemy

我正在修复我的论坛脚本,我想做许多流行的软件所做的事情,并在类别列表中显示每个板类别的最新回复。

我似乎无法获得每个类别只获得一个,或获得最新的东西。我可以得到一个或另一个,但不是两个。

我最近的尝试是:

db.session.query(Post)\
    .order_by(Post.id)\ 
    .group_by(Post.category)\
    .all()

...每个类别产生一个,但每个类别只有最老的一个。我已经尝试过它既有降序也有升序,似乎都没有按照我的要求行事。

表格信息

发布(I​​D,作者,标题,张贴,postedon,编辑)

类别(ID,名称,描述,重量)

是否可以撤消为group_by列出帖子的顺序?我觉得这会让我在我需要的地方正确。

1 个答案:

答案 0 :(得分:1)

经过多次愚弄,我找到了办法。

posts = db.session.query(Post.id)\
    .order_by(Post.id.desc())\
    .correlate(Category)\
    .filter(Category.id == Post.category)\
    .limit(1)\
    .as_scalar()

categories = db.session.query(Category, Post).filter(Post.id == posts).order_by(Category.weight)

我不知道这是否是最佳方式,但至少它可行。