SuperAPI AI 工具集

sqlmodel

编程与开发

查看项目

更新于 10-16 05:45

技能介绍

用途:SQLModel 让开发者用 Python 类型注解同时定义数据库表结构与 API 数据模式,适合搭配 FastAPI 构建带数据库的应用。安装:pip install sqlmodel;PostgreSQL 用 psycopg2-binary,MySQL 用 pymysql。

模型分两类:带 table=True 的表模型映射真实数据表,不带 table=True 的数据模型仅作 API 输入校验与响应整形,不会建表。主键须写成 int | None = Field(default=None, primary_key=True),可空字段用 int | None。

引擎:每个应用创建一个 engine 并全局复用,勿按请求重建。表创建调用 SQLModel.metadata.create_all(engine),但必须确保所有表模型已先被导入;生产环境建议用 Alembic 做迁移。

会话:用 with Session(engine) as session: 保证清理。FastAPI 中通过 yield 依赖实现每请求一个会话,并配 session.add、commit、refresh 完成写入。

推荐多模型模式:HeroBase 共享字段,Hero 为表模型,HeroCreate 作输入,HeroPublic 作输出,HeroUpdate 用于部分更新;数据模型不要继承表模型。输入转表用 model_validate,部分更新用 model_dump(exclude_unset=True) 加 sqlmodel_update。

查询用 select() 配合 session.exec(...).all()/first(),主键单行查找用 session.get。可用 Field(index=True) 建索引,用 Field(foreign_key=...) 与 Relationship(back_populates=...) 建关系,多对多用带 table=True 的显式链接模型。项目可拆分为 models、schemas、database、routers 文件。生产建议关闭 echo。