An important benefit of a relational database is our ability to follow the relationships among the objects. Using SQLAlchemy's query capability, we can follow the relationship from Tag
to Post
and locate all Posts
that share a given Tag
string.
A query is a feature of a session. This means that objects already in the session don't need to be fetched from the database, a potential time-saver. Objects not in the session are cached in the session so that updates or deletes can be handled at the time of the commit.
To gather all of the posts that have a given tag, we need to use the intermediate association table as well as the Post
and Tag
tables. We'll use the query method of the session to specify what kinds of objects we expect to get back. We'll use the fluent interface to join in the various intermediate tables and the final table that we want with the selection criteria. Here's how it looks:
for post in session.query(Post).join(assoc_post_tag).join...