Ordering by subquery in SQLAlchemy

橙三吉。 提交于 2019-12-06 03:05:53

looks fine to me, here's a test:

from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Thread(Base):
    __tablename__ = 'thread'

    id = Column(Integer, primary_key=True)


class Post(Base):
    __tablename__ = 'post'

    id = Column(Integer, primary_key=True)
    thread_id = Column(Integer, ForeignKey('thread.id'))
    posted_at = Column(String)

s = Session()

scalar = select([func.max(Post.posted_at)]).where(Post.thread_id == Thread.id).as_scalar()

q = s.query(Thread).order_by(scalar.desc())

print q

output (note we're just printing the SQL here):

SELECT thread.id AS thread_id 
FROM thread ORDER BY (SELECT max(post.posted_at) AS max_1 
FROM post 
WHERE post.thread_id = thread.id) DESC

looks pretty much like your query

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!