sqlalchemy relationship 参数

更新时间:2023-07-01 22:45:57 阅读: 评论:0

清明节的故事sqlalchemy relationship 参数
    SQLAlchemy是一个强大的Python ORM框架,它提供了多种关系类型来定义表之间的关联。在使用SQLAlchemy时,我们通常会定义两个表之间的关系,并将它们映射到模型类中。这里,我们需要使用SQLAlchemy的relationship参数来定义表之间的关系。
努诺戈麦斯
1996年属什么    relationship是SQLAlchemy中定义关系的一个关键参数。它用于定义两个表之间的关联,并在模型类中创建对应的属性。通过relationship,我们可以轻松地在两个表之间进行查询和联接。
    在SQLAlchemy中,relationship共有4个参数,分别是:
    1. backref:
    backref参数用于定义表之间的双向关系。它会在模型类的另一端为我们自动创建一个反向引用属性。例如:
        class Order(Ba):
计划书的模板
        __tablename__ = 'orders'
            id = Column(Integer, primary_key=True)
        customer_id = Column(Integer, ForeignKey('customers.id'))
        customer = relationship("Customer", backref="orders")
        class Customer(Ba):
五步学习法        __tablename__ = 'customers'冲牙器怎么用
            id = Column(Integer, primary_key=True)
        name = Column(String)
       
这里我们在Order模型类中定义了一个customer属性,对应了Customer表中的一条记录。同时,我们也在Customer模型类中定义了一个orders属性,它指向了一个Customer实例所
拥有的所有Order实例。这个属性是由backref参数自动生成的。
    2. ulist:
    ulist参数用于控制relationship返回列表还是单个对象。它默认为True,将返回多个对象。例如:
        class Customer(Ba):
        __tablename__ = 'customers'
            id = Column(Integer, primary_key=True)
        name = Column(String)
        orders = relationship("Order", ulist=Fal)
    这里我们在Customer模型类中指定了ulist=Fal,这意味着一个Customer实例只能拥有一个Order实例,而不是多个。
    3. lazy:
    lazy参数用于控制relationship的加载时间。它共有三个取值,分别是:
        * lazy="lect":延迟加载,当需要访问relationship对象时,发起一个lect查询。
    * lazy="joined":加入加载,联接查询,将relationship对象和其所关联的表一起加载。
    * lazy="dynamic":动态查询,返回一个查询对象,使我们可以在后续操作中对查询做更多的过滤、分页和排序。
    例如:
        class Customer(Ba):
        __tablename__ = 'customers'
            id = Column(Integer, primary_key=True)
        name = Column(String)
        orders = relationship("Order", lazy="joined")
    这里我们指定了lazy="joined",这意味着当我们访问Customer实例的orders属性时,它将与Order表联接查询。
    4. cascade:
    cascade参数用于控制relationship对象对关联表的操作。它共有七个取值,分别是:
        * all:所有操作都将级联执行。
    * save-update:关联表的保存和更新操作将级联执行。
    * merge:关联表的合并操作将级联执行。
    * delete:关联表的删除操作将级联执行。
    * delete-orphan:删除所有孤立的子对象。
    * refresh-expire:在操作执行前刷新关联表的所有对象。
我爱我家征文    * none:不进行任何级联操作。
    例如:
        class Customer(Ba):
        __tablename__ = 'customers'
            id = Column(Integer, primary_key=True)
        name = Column(String)
第三次国共合作        orders = relationship("Order", cascade="delete")
    这里我们指定了cascade="delete",这意味着当我们删除Customer实例时,它将级联删除与Order表关联的记录。
    总结:
    通过使用relationship参数,我们能够轻松地在SQLAlchemy中定义表之间的关联,并在
模型类中创建相应的属性。在定义关系时,我们需要考虑到backref、ulist、lazy和cascade等参数的作用,以便在实际使用中更加灵活和高效。

本文发布于:2023-07-01 22:45:57,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1072997.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:sql delete语法
标签:参数   操作   定义   关联   对象
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图