清明节的故事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等参数的作用,以便在实际使用中更加灵活和高效。