我正在使用Python 2.7.2和SQLAlchemy 0.9.3。
一个部门有很多团体。一个集团有很多成员。会员只能在一个小组中。
目前获取部门所有成员的列表。我首先获得所有组,然后获得这些组的成员。
有没有办法直接从部门转到成员而不通过分组表?
class Department(Base):
__tablename__ = 'departments'
id = Column(Integer, primary_key=True)
name = Column(String(64), unique=True)
location = Column(String(32), unique=True)
groups = relationship("Group", backref="department")
class Group(Base):
__tablename__ = 'groups'
id = Column(Integer, primary_key=True)
name = Column(String(64), unique=True)
department_id = Column(Integer, ForeignKey('departments.id'))
members = relationship("Member", backref="group")
class Member(Base):
__tablename__ = 'members'
id = Column(Integer, primary_key=True)
group_id = Column(Integer, ForeignKey('groups.id'))
答案 0 :(得分:2)
此类查询需要join声明:
q = session.query(Member).\
join(Member.group).\
join(Group.department).\
filter(Department.name=='depart_name')
result = q.all()
这将返回成员对象的列表,其中该成员是部门的一部分 depart_name