Python ORM
session
首先一句话解释一下 session 是一个数据库会话,它是一个用对象抽象过程的简单接口,用于与数据库进行交互。
add 方法
add 方法用于将对象添加到会话中,等待后续 commit 方法提交到数据库。当 commit 之后对象就会过期 但是当你访问对象属性时,会话会自动重新加载对象,所以你可以继续访问对象属性。
在创建会话时,我们需要指定一个参数叫做expire_on_commit=False,这样会话提交后对象就不会过期。
这个参数是 session 里面的
with Session(engine) as session:
session.add(hero_1)
session.add(hero_2)
session.add(hero_3)
session.commit()
#- 提交后对象就会过期
print(hero_1)
print(hero_2)
print(hero_3)
#- 访问对象属性时,会话会自动重新加载对象
print(hero_1.id)
print(hero_2.id)
print(hero_3.id)
refresh 方法
AsyncSessionFactory = async_sessionmaker(
bind=engine,
class_=AsyncSession,
expire_on_commit=False, # 提交后不过期
)
refresh 方法用于刷新对象的属性,从数据库中重新加载对象。
with Session(engine) as session:
session.add(hero_1)
session.add(hero_2)
session.add(hero_3)
session.commit()
#- 刷新对象属性
session.refresh(hero_1)
session.refresh(hero_2)
session.refresh(hero_3)
print(hero_1)
print(hero_2)
print(hero_3)