【发布时间】:2019-08-16 02:49:10
【问题描述】:
假设我们在 Company 和 Employee 之间有一个简单的一对多关系,有没有办法查询所有公司并在每个公司的属性中都有一个员工列表?
class Company(Base):
__tablename__ = 'company'
id = Column(Integer, primary_key=True)
name = Column(String)
class Employee(Base):
__tablename__ = 'employee'
id = Column(Integer, primary_key=True)
first_name = Column(String)
last_name = Column(String)
company_id = Column(Integer, ForeignKey(Company.id))
我正在寻找这样的东西:
>>> result = db.session.query(Company).join(Employee).all()
>>> result[0].Employee
[<Employee object at 0x...>, <Employee object at 0x...>]
结果的大小应与公司表中的行数相同。
我尝试了以下方法,它给出了对象元组(这是有道理的)而不是漂亮的父/子结构:
>>> db.session.query(Company, Employee).filter(Company.id = Employee.company_id).all()
把它转换成我想要的对象结构并不难,只是想看看有没有捷径。
【问题讨论】:
标签: python orm sqlalchemy foreign-keys