ORM-relationship的参数详解(待完善)

本文详细解析了SQLAlchemy ORM中的CASCADE概念,如何通过`relationship`中的`cascade`参数实现数据的级联操作。默认情况下,关联数据会在添加到session时一并保存。删除操作时,可以通过配置`cascade`参数决定是否删除关联对象。同时,文章讨论了`save-update`、`delete`、`merge`和`detach`等不同操作的影响,提供了示例说明级联操作的使用场景。
摘要由CSDN通过智能技术生成

ORM层面的CASCADE

  • 如果将数据库的外键设置为"RESTRICT",那么在ORM层面,删除了父表的数据将会为NULL,如果不想这种情况发生, 那么就应该在主键中添加参数, nullable=False

  • 在SQlAlchemy,只要将一个数据添加到session中, 和他关联的数据都可以一起存入数据库中, 这些设置可以通过relationship中的关键字参数cascade设置属性

relationship中cascade关键字参数属性

注意点: 只有在数据表一对多情况下使用,不能多对多的使用
  • save-update: 默认参数, 在添加一条数据时, 会将其他和他相关联的数据都添加到数据库中
  • delete: 当删除某一个模型中的数据时,是否也删除使用relationship关联的数据
  • delete-orphan: 表示当对一个ORM对象接触了父表中的关联对象时,自己便会删除掉,并且还需要在子模型类中添加一个参数single_parent=True参数
  • merge: 默认参数, 当在使用session.merge,合并一个对象时,会将使用了relationship相关联的对象进行合并操作
  • expunge: 移除操作时,会将相关联的对象也进行移除, 这个操作只是从session层面的移除, 并不会真正从数据库中删除
  • all: 是对save-update, merge, refresh-expire, d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值