flask 中ORM层面relationship的用法

编程入门 行业动态 更新时间:2024-10-24 12:28:12

flask 中ORM<a href=https://www.elefans.com/category/jswz/34/1738589.html style=层面relationship的用法"/>

flask 中ORM层面relationship的用法

ORM层面的relationship方法中cascade:

 在SQLAlchemy,只要将一个数据添加到session中,和他相关联的数据都可以一起存入到数据库中了。

这些是怎么设置的呢?其实是通过relationship的时候,有一个关键字参数cascade可以设置这些属性,

cascade属性值为:

save-update:默认选项。在添加一条数据的时候,会把其他和他相关联的数据都添加到数据库中。这种行为就是save-update属性影响的。

delete:表示当删除某一个模型中的数据的时候,是否也删掉使用relationship和他关联的数据。

delete-orphan:表示当对一个ORM对象解除了父表中的关联对象的时候,自己便会被删除掉。当然如果父表中的数据被删除,自己也会被删除。这个选项只能用在一对多上,并且还需要在子模型中的relationship中,增加一个single_parent=True的参数。

merge:默认选项。当在使用session.merge,合并一个对象的时候,会将使用了relationship相关联的对象也进行merge操作。

expunge:移除操作的时候,会将相关联的对象也进行移除。这个操作只是从session中移除,并不会真正的从数据库中删除。

all:是对save-update, merge, refresh-expire, expunge, delete几种的缩写

class User(Base):__tablename__ = 'user'id = Column(Integer,primary_key=True,autoincrement=True)uname = Column(String(50),nullable=False)# articles =relationship("Article",cascade="save-update,delete") #放入Article中去优化# comments = relationship("Comment") #放入Comment中去优化class Article(Base):__tablename__ = 'article'id = Column(Integer, primary_key=True, autoincrement=True)title = Column(String(50), nullable=False)uid = Column(Integer,ForeignKey("user.id"),nullable=False)# author = relationship("User",backref="articles") #cascade默认为save-update# author = relationship("User",backref="articles",cascade="save-update") #明文指定为save-update#delete:表示当删除某一个模型中的数据的时候,是否也删掉使用relationship和他关联的数据。默认不删除关联数据# author = relationship("User",cascade="save-update,delete") #明文指定为save-update 和delete#优化写法author = relationship("User",backref=backref("articles",cascade="save-update,delete"),cascade="save-update,delete")# author = relationship("User",backref=backref("articles",cascade="save-update,delete"),cascade="all")

更多推荐

flask 中ORM层面relationship的用法

本文发布于:2024-02-12 00:50:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1684731.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:层面   flask   ORM   relationship

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!