【发布时间】:2013-07-05 04:43:55
【问题描述】:
我正在尝试选择按最新回复时间降序排列的最新线程(线程)(回复是帖子模型,这是标准论坛查询)。在 SQL 中,我会这样写:
SELECT * FROM thread AS t ORDER BY (SELECT MAX(posted_at) FROM post WHERE thread_id = t.id) DESC
我如何在 SQLAlchemy 中做这样的事情?我尝试过这样的事情:
scalar = db.select[func.max(Post.posted_at)].where(Post.thread_id == Thread.id).as_scalar()
threads = Thread.query.order_by(scalar.desc()).all()
但我似乎不明白标量是如何工作的。第五次阅读文档无济于事。有人可以帮我在 SQLAlchemy 中编写这样的查询吗?我在这个应用程序中使用了 flask-sqlalchemy 和 MySQL。
【问题讨论】:
-
除了 select 后面缺少的括号,这正是它的工作原理,order_by(select().(..).as_scalar().desc()),Thread.id 应该与父级相关自动查询。您需要在此处详细说明什么是“不起作用”。
标签: python mysql sqlalchemy flask-sqlalchemy