首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLAlchemy更改关系

SQLAlchemy更改关系
EN

Stack Overflow用户
提问于 2017-03-05 07:01:51
回答 1查看 296关注 0票数 0

您好,我有一组表,其中一些表具有多对一关系。例如:

代码语言:javascript
复制
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)

正如你所看到的,几家公司可以属于同一个行业。有没有人知道在几个公司之间共享行业的情况下,删除公司对象的程序应该是什么?显然,当其他公司对象存在时,我不会接触行业对象。

EN

回答 1

Stack Overflow用户

发布于 2017-03-05 17:46:24

每个Company对象都保留一个行业id作为定义的外键。如果您删除一家公司,这不会有问题,因为行业Id只是一个引用,但如果您删除一个行业对象,其中的公司使用它的id,那么就会导致问题。如果没有行业,公司实例将无法存在:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42602387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档