我想创建一个可以为null的自引用关系,可以使用SQLAlchemy删除它。示例模型如下(注意,使用Flask-SQLAlchemy):
class Person(db.Model):
__tablename__ = 'person'
id = db.Column(db.Integer, primary_key=True)
partner_id = db.Column(db.Integer, db.ForeignKey('person.id'), nullable=True)
partner = db.relationship('Person', uselist=False)
所以把它想象成一个只有一个伙伴的警察桌子,但那个伙伴可能一直都在黑手党中,所以他们失去了他们的伴侣一段时间。没有合作伙伴的警察是好的,至少在数据库方面是这样 - 但我认为在整个演出过程中他们的无伙伴身份意味着很多财产损失。
毋庸置疑,这个问题:sqlalchemy: one-to-one relationship with declarative讨论了如何建立这种关系。问题是你如何消除这种关系?通常使用不同的外键,您可以按如下方式执行此操作:
joe.partner.remove(larry)
其中joe
和larry
都是Person
个对象。但是,通过uselist
参数,joe.partner
现在实际上是Person
,没有remove
方法。