方式① ORM 对象模式(Session.add/delete)
product = Product(name="xxx")
session.add(product)
await session.commit()
原理:利用 Session 变更追踪、Unit of Work。
✅适用:业务 CRUD、需要操作relationship多对多 / 一对多、领域模型、需要对象缓存。
❌不适合:大批量数据导入、复杂统计报表。
方式② Core 表达式语法(select /insert/update /delete)
stmt = select(Product).where(Product.id == 1)
stmt = insert(Product).values(...)
await session.execute(stmt)
✅适用:
批量插入、复杂查询、动态条件拼接、不想构造 ORM 对象;
既能在 Session 运行,也能直接在 Connection 底层运行。
方式③ 原生 SQL text ()
from sqlalchemy import text
sql = text("SELECT * FROM product WHERE id=:pid")
await conn.execute(sql, {"pid":1})
✅适用:极度复杂 SQL、存储过程、数据库特有语法、迁移脚本。
规范建议:业务接口优先「ORM 对象 / Core 表达式」;尽量少手写 text 原生 SQL。




