2017-02-10 43 views
1

這裏是我的模型(忽略進口):如何從父在SQLAlchemy的關係中移除子

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() 

所有這些都可以正常工作(所以請忽略我將它複製到這裏的任何錯誤)。現在我試圖打破這種關係,同時讓父母和孩子都保留在數據庫中,而我現在是空着的。

我很感激任何幫助。

回答

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?

+0

看起來像那工作。基本上我想要做的是說孩子不再屬於那個父母。非常感謝你! – drewd423