I've just recently started using SQLAlchemy and am still having trouble wrapping my head around some of the concepts.
Boiled down to the essential elements, I have two tables like this (this is through 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')
How would I go about querying for a list of users and their newest post (excluding users with no posts). If I was using SQL, I would do:
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)
So I know exactly the "desired" SQL to get the effect I want, but no idea how to express it "properly" in SQLAlchemy.
Edit: in case it's important, I'm on SQLAlchemy 0.6.6.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…