可使用db.relationship()把数据库的不同行联系起来,建立一对多的关系,db.relationship()的第一个
参数表明关系的另一端是哪个模型,其他可选参数如下:
backref 在关系的另一个模型中添加反向引用
primaryjoin 明确两个模型之间使用的联结条件
lazy 指定如何加载相关记录,
可选值有select(首次访问时加载)、immediate(源对象加载后加载)、joined(加载记录,但使用联结)、subquery(立即加载,但使用子查询),noload(永不加载)、 dynamic(不加载记录,但提供加载记录的查询)
当一个查询是另一个查询的条件时,称之为子查询。
uselist 如果设为False,不适用列表而使用标量
order_by 指定关系中记录的排序方式
secondary 指定多对多关系中关系表的名字
secondaryjoin 指定多对多关系中的二级联结条件
session.merge()修改表中记录,其所需要的实体状态为脱管状态,实体状态没有持久化,但是数据库中的记录更新了。
Session.update()实体变成了持久化状态。数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称
db.py对数据库中事务的管理
开启和关闭:
def create_session():
"""
Contextmanager that will create and teardown a session.
"""
session = settings.Session()
try:
yield session
session.expunge_all()
ses