用途:围绕 Python 库 SQLModel 提供开发指引,适用于需要让同一模型类同时承担数据库 ORM 模型与 Pydantic 校验模式,并常与 FastAPI 搭配的场景。安装命令为 pip install sqlmodel。
主要能力:定义带 table=True 的数据库表模型(不带则仅作 Pydantic 模式);用 Field() 配置 primary_key、index、unique、foreign_key、默认值;用 Session 完成增删改查;用 select() 做类型安全查询,支持 where/and_/or_/contains、order_by、offset、limit;用 Relationship 定义模型关系;通过 model_validate() 在模式与表模型间转换;用 sqlmodel_update() 配合 model_dump(exclude_unset=True) 做部分更新。
FastAPI 集成:create_engine 建引擎,SQLModel.metadata.create_all 建表,get_session 作为依赖,用 Annotated[Session, Depends(get_session)] 注入;建表可放在 lifespan 中而非已弃用的 @app.on_event。
参考主题:models.md(字段、验证器、计算字段、继承、混入)、relationships.md(一对多、多对多、自引用、懒加载)、async.md(异步会话与引擎、后台任务)、migrations.md(Alembic 配置、自动生成、迁移模式)。
最佳实践:表模型与 API 模式分离;对约束统一用 Field();频繁查询的列加 index;开发期可用 echo=True 查看生成的 SQL;Alembic 中可用 compare_type=True。
限制与注意:模型若需建表必须显式加 table=True;循环导入可用 TYPE_CHECKING 与字符串注解缓解;访问懒加载关系时须保证会话仍打开;迁移未检测到变更时可检查 Alembic 的 compare_type 配置。具体版本、性能、收费信息暂未提供。