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