文档非常清楚地说明了如何定义关系,例如一对多:
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
children = relationship("Child")
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
但是它没有给出任何示例来说明如何设置或检索相关的children
。例如,如何从数据库中查询Parent
并检索其子项的集合,然后添加或删除一些子项?是否有关于每种关系的示例的资源?
答案 0 :(得分:1)
基于文档中的this tutorial,简短的答案是,当关系由单个对象表示时,如下所示:
class Child:
parent_id = Column(Integer, ForeignKey('parent.id'))
parent = relationship("Parent", back_populates="children")
将父类的对象分配给它即可:
parent = Parent()
child.parent = parent
和parent = child.parent
将检索父对象。根据指南,这种情况是由于属性变化事件而发生的,并在Python中进行了评估。当关系由集合表示时,各种集合类型(例如集合和字典)都是可能的,但是默认类型是Python列表:
class Parent:
children = relationship("Child", back_populates="parent")
因此,您可以在此处分配子对象的列表:
parent.children = [
Child(),
Child()
]
或从children
属性中检索对象列表并进行修改。