sqlalchemy数据库异步查询库用法-第三期
tornado吧
全部回复
仅看楼主
level 5
### 插入记录
.
async with AsyncSessionLocal() as async_session:
  async with async_session.begin():
    await async_session.add(user)
    await async_session.add(order)
.
========================================================
.
### 删除记录
.
async with AsyncSessionLocal() as async_session:
  async with async_session.begin():
    await async_session.delete(user)
    await async_session.delete(order)
2025年12月08日 15点12分 1
level 5
总结
.
1. async_session.add协程函数插入行
  1.1 待插入的model对象作为函数参数
2. async_session.delete协程函数删除行
  2.1 待删除的model对象作为函数参数
3. 因为async_session.add、async_session.delete都是协程函数
  3.1 所以调用它们时都要添加await指令
2025年12月08日 15点12分 2
level 5
重要总结
.
1. async_session代表的是一个数据库连接会话,不是一个事务
2. add、delete等修改操作应当在事务中执行
  2.1 创建事务靠async_session.begin实现
  2.2 事务对象实现了上下文管理器协议,所以创建事务对象更常见的写法为:async with async_session.begin()
2025年12月08日 15点12分 3
AsyncSession.begin()函数返回值是 AsyncSessionTransaction类的实例对象
2025年12月08日 15点12分
因为AsyncSessionTransaction实现了上下文管理器协议,所以不需要显式的commit调用,退出上下文时内部自动调用commit
2025年12月08日 15点12分
level 5
结帖咯
[酷][酷][酷]
2025年12月08日 15点12分 4
level 5
2025年12月08日 15点12分 5
1