1. 简介
SQLModel 建立在 SQLAlchemy 之上,提供了简化的连接管理和事务处理,同时直接支持 MySQL 数据类型和简化了外键和关系的定义,非常适合轻量级应用程序和小型项目。它可以使用 Pydantic 来定义模型,并且可以自动将这些模型映射到数据库表。这使得开发者可以轻松地进行数据库操作,而无需编写大量的 SQL 代码。
2. 安装
首先,需要安装 FastAPI 和 SQLModel:
1 2
| pip install fastapi[all] pip install sqlmodel
|
3. 定义模型
使用 SQLModel 定义模型非常简单。你只需要从 SQLModel
继承并添加字段即可。
1 2 3 4 5 6
| from sqlmodel import SQLModel, Field
class User(SQLModel, table=True): id: int = Field(default=None, primary_key=True) name: str age: int
|
4. SQLModel的独特之处
- 基于Pydantic,继承了 Pydantic 的类型注解和数据验证功能
- 使用类型注解来定义数据库模型,从而简化了模型的创建过程
- 支持异步操作
- 操作简化,会话、事务处理等做了进一步简化
- 为FastAPI设计
5. SQLModel的简单实用
SQLModel 支持多种数据库,例如 SQLite、PostgreSQL 等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| from sqlmodel import Field, Session, SQLModel, create_engine, select
engine = create_engine("sqlite:///database.db") SQLModel.metadata.create_all(engine)
new_user = User(name="John Doe", age=30) with Session(engine) as session: session.add(new_user) session.commit()
with Session(engine) as session: statement = select(User).where(User.name == "John Doe") user = session.exec(statement).first() print(user)
with Session(engine) as session: statement = select(User) users = session.exec(statement).all() print(users)
with Session(engine) as session: statement = select(User).where(User.name == "John Doe") user_to_update = session.exec(statement).first() user_to_update.name = "Jane" session.commit()
with Session(engine) as session: statement = select(User).where(User.name == "Jane") user_to_delete = session.exec(statement).first() session.delete(user_to_delete) session.commit()
|