【问题标题】:How to remove a child from a parent in SQLAlchemy relationship如何从 SQLAlchemy 关系中的父级中删除子级
【发布时间】:2017-06-29 06:01:58
【问题描述】:

这是我的模型(忽略导入):

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

一切正常(所以请忽略我在将其复制到此处时可能犯的任何错误)。现在我试图打破这种关系,同时将父母和孩子都保留在数据库中,但我的结果是空的。

感谢您的帮助。

【问题讨论】:

    标签: python orm sqlalchemy


    【解决方案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?

    【讨论】:

    • 看起来有效。基本上我想做的是说孩子不再属于那个父母。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2012-10-28
    • 2016-04-02
    相关资源
    最近更新 更多