SQLAlchemy - подзапрос в предложении WHERE

Я только недавно начал использовать SQLAlchemy, и у меня все еще возникают проблемы с осмыслением некоторых концепций.

Сводится к основные элементы, у меня есть две такие таблицы (это через Flask-SQLAlchemy):

class User(db.Model):
    __tablename__ = 'users'
    user_id = db.Column(db.Integer, primary_key=True)

class Posts(db.Model):
    __tablename__ = 'posts'
    post_id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.user_id'))
    post_time = db.Column(db.DateTime)

    user = db.relationship('User', backref='posts')

Как я могу запросить список пользователей и их новейшие сообщения (исключая пользователей без сообщений). Если бы я использовал SQL , Я бы сделал:

SELECT [whatever]
FROM posts AS p
    LEFT JOIN users AS u ON u.user_id = p.user_id
WHERE p.post_time = (SELECT MAX(post_time) FROM posts WHERE user_id = u.user_id)

Итак, я точно знаю «желаемый» SQL, чтобы получить желаемый эффект, но не знаю, как «правильно» выразить его в SQLAlchemy.

Изменить: в случае, если это важно, я в SQLAlchemy 0.6.6.

48
задан kay 7 December 2012 в 13:01
поделиться