,

SQLAlchemy 提供了几种操作数据的方式

方式① ORM 对象模式(Session.add/delete) 原理:利用 Session 变更追踪、Uni…

方式① 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。

Next Post

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About the Author

每个人都有自己得时区,在自己得时区里,一切都是准时的。

BlockSpare — News, Magazine and Blog Addons for (Gutenberg) Block Editor