我最近刚刚开始使用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版本。
select()
风格查询在 sqlalchemy 1.4/2.0 版本中。 - yurisich