uselist默认为True,设置位False之后返回的是标量,而不是列表,一对多的话在多的一边声明关系的时候可以加上;
backref是back_populates的简化版,不过建议显式声明反向引用,因为显示总比隐式好;
back_populates就像上边说的,定义反向引用,用于建立双相关系心,在关系两侧都必须显示定义关系属性;
secondary在多对多的的关系中指定关联表
cascade 设置级练操作
order_by指定加载相关纪录史的排序方式
primaryjoin 指定多对多关系中的一级联结条件
secondaryjoin 指定多对多关系中的二级联结条件
lazy 指定如何加载相关记录以下是lazy的参数可选值
select必要时一次性加载记录,返回包含记录的列表(默认值),等同于lazy=True
joined和父查询一样加载记录,但是用联结,等同于lazy=False
immediate一旦父查询加载就加载
subquery类似于joined,不过将使用子查询
dynamic不直接加载记录,而是返回一个包含相关记录的query对象,一遍再继续附加查询函数对结果进行过滤;
remote_side指定关系的远程侧,类型为一个列表(只在同一个表中外键指向自身表的id的情况下用到过,比如评论和回复,其他时候就不知道了)注意:dynamic选项仅用于集合关系属性,不可用于多对一、一对一或是在关系函数中将uselist参数设为False的情况。
注意:许多教程和示例使用dynamic来动态加载所有集合关系属性对应的记录,这是应该避免的行为。使用dynamic加载方式意味着每次操作关系都会执行一次SQL查询,这会造成潜在的性能问题。大多数情况下我们只需要使用默认值(select),只有在调用关系属性会返回大量记录,并且总是需要对关系属性返回的结果附加额外的查询时才需要使用动态加载(lazy='dynamic')。