作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在外键和关系中声明级联有什么区别?
class Contact(Base):
__tablename__ = 'contacts'
id = Column(Integer, primary_key=True)
addresses = relation("Address", backref="contact")
class Address(Base):
__tablename__ = 'addresses'
id = Column(Integer, primary_key=True)
contact_id = Column(Integer, ForeignKey('contact.id', onupdate="CASCADE", ondelete="CASCADE")))
class Contact(Base):
__tablename__ = 'contacts'
id = Column(Integer, primary_key=True)
addresses = relation("Address", backref="contact", cascade="all, delete-orphan")
class Address(Base):
__tablename__ = 'addresses'
id = Column(Integer, primary_key=True)
contact_id = Column(Integer, ForeignKey('contact.id'))
最佳答案
您是正确的,外键级联是在数据库级别完成的。也许毫不奇怪,关系方法是在 Python 级别上完成的。当从 session 中刷新父项的删除时,SQLAlchemy 读取关系并向所有成员发出删除,处理任何其他级联。
另请注意,如果您使用数据库级联,您还需要配置关系以了解这一事实。
关于sqlalchemy:在外键和关系中声明级联有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2854221/
我是一名优秀的程序员,十分优秀!