Quelle est la différence entre déclarer la cascade dans une clé étrangère et les relations?sqlalchemy: quelle est la différence entre déclarer la cascade dans la clé étrangère vs relation?
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")))
vs
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'))
avec la déclaration clé étrangère, il semble que la cascade est appliquée au niveau de la base de données. comment fonctionne l'approche relationnelle? Merci!
Donc, je devrais vraiment combiner les deux afin que la relation est au courant de la cascade de la base de données? – steve
Voir la documentation pour les paramètres passive_updates et passive_deletes pour la fonction de relation: http://www.sqlalchemy.org/docs/reference/orm/mapping.html#sqlalchemy.orm.relationship –
awesome. Merci pour la clarification. – steve