3个表之间的SQLAlchemy关系

2024-09-26 22:49:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python2.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'))

Tags: keyidtruebasestring成员columninteger
1条回答
网友
1楼 · 发布于 2024-09-26 22:49:20

此类查询需要join语句:

q = session.query(Member).\
        join(Member.group).\
        join(Group.department).\
        filter(Department.name=='depart_name')

result = q.all()

这将返回成员对象的列表,其中该成员是部门部门名称的一部分

相关问题 更多 >

    热门问题