gpt4 book ai didi

sqlalchemy:在外键和关系中声明级联有什么区别?

转载 作者:行者123 更新时间:2023-12-04 12:14:34 25 4
gpt4 key购买 nike

在外键和关系中声明级联有什么区别?

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com