sqlalchemy - How get all rows not in many-to-many relationship -
i need users not refer group. in sql it's not exist
. don't know how within sqlalchemy's orm.
models.py
group_table = table('assoc_groups_users', base.metadata, column('user_id', integer, foreignkey('users.id')), column('group_id', integer, foreignkey('groups.id')) ) class users(base): __tablename__ = "users" id = column(integer, primary_key=true) name = column(string(50), unique=false) class groups(base): __tablename__ = "groups" id = column(integer, primary_key=true) title = column(string(127)) users = relationship("users", secondary=books_table, backref=backref("books", lazy='dynamic'))
using relationship
s (small , simple code, bit more verbose sql
exists
, not required join on groups
table):
query = session.query(users).filter(~users.groups.any())
otherwise, using outerjoin
where
, direct , generates sql
resembling one-to-one query:
query = (session.query(users) .outerjoin(group_table, group_table.c.user_id == users.id) .filter(group_table.c.user_id == none) )
Comments
Post a Comment