素材阁

SQLAlchemy 速查

共 24 条 SQLAlchemy 常用写法,涵盖连接与模型、会话与 CRUD、查询、关系、进阶。 支持搜索与分类筛选,点击即可复制。

连接与模型

2.0 风格。

命令说明
创建引擎
声明基类
定义模型(类型注解)
字段
建表

会话与 CRUD

Session 是工作单元。

命令说明
创建会话
新增并提交
按主键获取
修改 / 删除
刷新 / 脱离会话

查询

select 语句。

命令说明
全部查询
条件排序分页
取单条
计数
分组聚合

关系

外键与关联。

命令说明
引入
外键字段
一对多
预加载(避免 N+1)

进阶

事务、原生 SQL 与迁移。

命令说明
事务
原生 SQL(参数化)
迁移
连接池配置
调试

使用说明

SQLAlchemy 速查:连接与模型、会话与 CRUD、查询、关系、进阶;支持搜索与分类筛选,点击即可复制。

  1. 按用途点分类:连接与模型、会话与 CRUD、查询、关系、进阶。
  2. 点「写法」列复制,替换表名、字段与连接串后使用。
  3. 用 2.0 风格:DeclarativeBase + Mapped/mapped_column + select()。
  4. 加载关联对象时用 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 的事务。

延伸阅读

相关工具