以下是我的模型(忽略导入):
class Parent(Base):
__tablename__ = 'parents'
id = Column(Integer, primary_key=True)
name = Column(String)
children = relationship('Child', backref='parent', lazy='dynamic')
class Child(Base):
__tablename__ = 'children'
id = Column(Integer, primary_key=True)
name = Column(String)
parent_id = Column(Integer, ForeignKey('parents.id'))
接下来,我创建一个父项和一个孩子,并将它们联系起来:
dbsession = session()
child = Child(name='bar')
dbsession.add(child)
parent = Parent(name='foo')
parent.children.append(child)
dbsession.add(parent)
dbsession.commit()
一切正常(因此请忽略我可能将其复制到此处的任何错误)。现在我试图打破这种关系,同时将父母和孩子都保留在数据库中,而且我是空的。
我感谢任何帮助。
答案 0 :(得分:1)
我不确定你打破关系的确切含义或原因,但我认为这可行:
child = dbsession.query(Child).filter(Child.name=='bar').one()
child.parent_id = None
dbsession.add(child)
dbsession.commit()
这篇文章提供了有关消隐外键的更多信息:Can a foreign key be NULL and/or duplicate?