您好,我有一组表,其中一些表具有多对一关系。例如:
class Industry(Base):
__tablename__ = 'industry'
id = Column(Integer, Sequence('industry_id_seq'), nullable=False, unique=True, primary_key=True)
name = Column(String(255), unique=True, nullable=False)
companies = relationship('Company',backref=backref('industry',cascade='delete,all'))
class Company(Base):
__tablename__ = 'company'
id = Column(Integer, Sequence('company_id_seq'), nullable=False, unique=True, primary_key=True)
industry_id = Column(Integer, ForeignKey(Industry.id), nullable=False)
name = Column(String(255), unique=True, nullable=False)正如你所看到的,几家公司可以属于同一个行业。有没有人知道在几个公司之间共享行业的情况下,删除公司对象的程序应该是什么?显然,当其他公司对象存在时,我不会接触行业对象。
发布于 2017-03-05 17:46:24
每个Company对象都保留一个行业id作为定义的外键。如果您删除一家公司,这不会有问题,因为行业Id只是一个引用,但如果您删除一个行业对象,其中的公司使用它的id,那么就会导致问题。如果没有行业,公司实例将无法存在:
companies = session.query(Company).filter(industry.name=='Tech').all()
#can delete all companies of same industry
first_comp = session.query(Company).filter(industry.name=='Tech').first()
session.delete(first_comp)
session.commit()https://stackoverflow.com/questions/42602387
复制相似问题