SuperAPI AI 工具集

sqlalchemy-orm

编程与开发

查看项目

更新于 10-15 13:11

技能介绍

用途

本技能面向使用 Python 进行数据库开发的场景,讲解 SQLAlchemy Python SQL 工具包与 ORM 的现代用法。根据原文,适用时机包括:构建带数据库的 Python 应用、需要类型安全的复杂 SQL 查询、使用 FastAPI/Flask/Django 框架,以及需要进行数据库迁移(Alembic)时。

主要能力

声明式模型

使用 DeclarativeBase、Mapped[T] 和 mapped_column() 定义带类型提示的模型,支持主键、必填字段、可选字段、带服务器默认值的时间戳以及关系定义。

关系映射

支持一对多关系(通过 relationship 与 back_populates)和多对多关系(通过关联表 Table 与 secondary 参数)。

数据库设置

提供引擎创建(create_engine)与会话工厂(sessionmaker)配置,包含连接池参数(poolclass、pool_size、max_overflow、pool_pre_ping、echo),以及 SQLite、PostgreSQL、MySQL 的数据库 URL 格式说明。文档还给出 FastAPI 依赖注入模式的 get_db 生成器。

查询模式(SQLAlchemy 2.0)

使用 select() 进行查询,支持 and_、or_ 条件、like、排序(desc)、limit、offset、计数(func.count)。连接查询涵盖内连接、左外连接、多次连接。预加载通过 selectinload、joinedload 解决 N+1 问题,并支持嵌套预加载与 load_only 仅加载指定列。

CRUD 操作

创建(add、add_all 批量插入、commit、refresh)、读取(scalar_one_or_none、分页)、更新(属性赋值与批量 update 语句)、删除(delete 与批量 delete 语句)。

事务与会话管理

上下文管理器模式(成功提交、异常回滚、最终关闭)以及手动事务控制(begin_nested、with_for_update)。

异步 SQLAlchemy

使用 create_async_engine、AsyncSession、async_sessionmaker 进行异步设置与 CRUD 操作,并给出 FastAPI 异步依赖示例。

Alembic 迁移

包含初始化(alembic init)、配置 env.py、自动生成迁移(alembic revision --autogenerate)、应用迁移(alembic upgrade head)、回滚(alembic downgrade -1)、查看当前版本与历史,以及手动迁移示例。

FastAPI 集成

提供完整的 FastAPI 示例,包括 Pydantic 模型(from_attributes)、创建、读取、列表、更新端点。

使用方式

原文给出快速开始步骤:

  • pip install sqlalchemy
  • 使用声明式基类定义模型
  • 创建引擎与会话
  • 使用 select() 查询并 commit() 提交

安装命令还包括:

  • 异步支持:pip install sqlalchemy[asyncio] aiosqlite(SQLite)、pip install sqlalchemy[asyncio] asyncpg(PostgreSQL)
  • 迁移:pip install alembic
  • FastAPI 集成:pip install fastapi sqlalchemy

适用场景与限制

适用于需要 ORM 与数据库迁移的 Python 项目,尤其是使用 FastAPI 的 Web 应用。原文标注了 token 估算:入口 70-85,完整 4500-5500。关于具体版本兼容性、性能基准、收费与价格等事实,资料中暂未提供。