【发布时间】:2011-09-06 14:07:48
【问题描述】:
我最近才开始使用 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。
【问题讨论】:
标签: python sqlalchemy subquery