SQLAlchemy 速查
共 24 条 SQLAlchemy 常用写法,涵盖连接与模型、会话与 CRUD、查询、关系、进阶。 支持搜索与分类筛选,点击即可复制。
连接与模型
2.0 风格。
| 命令 | 说明 |
|---|---|
| 创建引擎 | |
| 声明基类 | |
| 定义模型(类型注解) | |
| 字段 | |
| 建表 |
会话与 CRUD
Session 是工作单元。
| 命令 | 说明 |
|---|---|
| 创建会话 | |
| 新增并提交 | |
| 按主键获取 | |
| 修改 / 删除 | |
| 刷新 / 脱离会话 |
查询
select 语句。
| 命令 | 说明 |
|---|---|
| 全部查询 | |
| 条件排序分页 | |
| 取单条 | |
| 计数 | |
| 分组聚合 |
关系
外键与关联。
| 命令 | 说明 |
|---|---|
| 引入 | |
| 外键字段 | |
| 一对多 | |
| 预加载(避免 N+1) |
进阶
事务、原生 SQL 与迁移。
| 命令 | 说明 |
|---|---|
| 事务 | |
| 原生 SQL(参数化) | |
| 迁移 | |
| 连接池配置 | |
| 调试 |
使用说明
SQLAlchemy 速查:连接与模型、会话与 CRUD、查询、关系、进阶;支持搜索与分类筛选,点击即可复制。
- 按用途点分类:连接与模型、会话与 CRUD、查询、关系、进阶。
- 点「写法」列复制,替换表名、字段与连接串后使用。
- 用 2.0 风格:DeclarativeBase + Mapped/mapped_column + select()。
- 加载关联对象时用 selectinload 预加载,避免 N+1 查询。
常见问题
- create_all 能用于生产吗?
- 不建议。create_all 只建缺失的表、不做变更,生产应配合 Alembic 迁移管理结构演进,create_all 仅用于开发或测试初始化。
- selectinload 解决什么问题?
- 它一次性按 IN 查询把关联对象加载进来,替代逐个懒加载,避免循环访问关系时产生大量额外 SQL(N+1 问题)。
- 怎么写原生 SQL?
- 用 text() 包装并参数化:s.execute(text("SELECT * FROM t WHERE id=:id"), {"id": 1}),既安全又能继续用 Session 的事务。