SQLModel,Python中的SQL数据库,设计用于简洁、兼容性和健壮性。
项目描述
SQLModel,Python中的SQL数据库,设计用于简洁、兼容性和健壮性。
源代码: https://github.com/fastapi/sqlmodel
SQLModel是一个库,用于从Python代码中通过Python对象与SQL数据库进行交互。它设计得直观、易于使用、高度兼容且健壮。
SQLModel 是基于 Python 类型注解的,由 Pydantic 和 SQLAlchemy 驱动。
其主要特点包括
- 易于编写:强大的编辑器支持。到处都有自动完成。更少的时间用于调试。设计用于易于使用和学习。更少的时间阅读文档。
- 易于使用:它具有合理的默认值,并在底层执行大量工作以简化您编写的代码。
- 兼容性:它设计为与 FastAPI、Pydantic 和 SQLAlchemy 兼容。
- 可扩展性:您拥有 SQLAlchemy 和 Pydantic 所有的功能。
- 简洁性:最小化代码重复。单个类型注解完成大量工作。无需在 SQLAlchemy 和 Pydantic 中重复模型。
赞助商
FastAPI 中的 SQL 数据库
SQLModel 是为简化在 FastAPI 应用程序中与 SQL 数据库的交互而设计的,它是由同一个 作者 创建的。😁
它结合了 SQLAlchemy 和 Pydantic,并尽可能简化您编写的代码,使您可以将代码重复减少到最小,同时获得最佳的开发者体验。
SQLModel 实际上是在 Pydantic 和 SQLAlchemy 之上的一层薄薄的封装,精心设计以与两者兼容。
要求
一个最新且目前受支持的 Python 版本。
由于 SQLModel 基于 Pydantic 和 SQLAlchemy,因此它需要它们。当您安装 SQLModel 时,它们将自动安装。
安装
请确保您创建了一个 虚拟环境,激活它,然后安装 SQLModel,例如
$ pip install sqlmodel
---> 100%
Successfully installed sqlmodel
示例
有关数据库、SQL 以及其他所有内容的介绍,请参阅 SQLModel 文档。
这里有一个快速示例。✨
一个 SQL 表
假设您有一个名为 hero
的 SQL 表,具有以下内容
id
name
secret_name
age
并且您希望它具有以下数据
id | name | secret_name | age |
---|---|---|---|
1 | Deadpond | Dive Wilson | null |
2 | Spider-Boy | Pedro Parqueador | null |
3 | Rusty-Man | Tommy Sharp | 48 |
创建一个 SQLModel 模型
然后您可以创建一个这样的 SQLModel 模型
from typing import Optional
from sqlmodel import Field, SQLModel
class Hero(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str
secret_name: str
age: Optional[int] = None
该类 Hero
是一个 SQLModel 模型,在 Python 代码中相当于一个 SQL 表。
这些类属性中的每一个都相当于每个表的列。
创建行
然后您可以将表的每一行作为模型的实例来创建
hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson")
hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador")
hero_3 = Hero(name="Rusty-Man", secret_name="Tommy Sharp", age=48)
这样,您可以使用代表表和行的常规 Python 代码和类以及实例与 SQL 数据库进行通信。
编辑器支持
一切都是为了使您获得最佳的开发者体验而设计的,包括最佳的编辑器支持。
包括 自动完成
和 内联错误
写入数据库
您可以通过快速跟随教程了解更多有关 SQLModel 的信息,但如果您现在就需要尝试如何将这些内容组合在一起并将其保存到数据库中,您可以这样做
from typing import Optional
from sqlmodel import Field, Session, SQLModel, create_engine
class Hero(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str
secret_name: str
age: Optional[int] = None
hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson")
hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador")
hero_3 = Hero(name="Rusty-Man", secret_name="Tommy Sharp", age=48)
engine = create_engine("sqlite:///database.db")
SQLModel.metadata.create_all(engine)
with Session(engine) as session:
session.add(hero_1)
session.add(hero_2)
session.add(hero_3)
session.commit()
这将保存一个包含 3 个英雄的 SQLite 数据库。
从数据库中选择
然后您可以编写查询来从该数据库中选择,例如
from typing import Optional
from sqlmodel import Field, Session, SQLModel, create_engine, select
class Hero(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str
secret_name: str
age: Optional[int] = None
engine = create_engine("sqlite:///database.db")
with Session(engine) as session:
statement = select(Hero).where(Hero.name == "Spider-Boy")
hero = session.exec(statement).first()
print(hero)
编辑器支持无处不在
SQLModel 被精心设计,以提供最佳的开发人员体验和编辑器支持,即使在从数据库中选择数据后
SQLAlchemy 和 Pydantic
这个类 Hero
是一个 SQLModel 模型。
但同时,✨ 它也是一个 SQLAlchemy 模型 ✨。因此,您可以将其与其他 SQLAlchemy 模型结合使用,或者可以轻松地将使用 SQLAlchemy 的应用程序迁移到 SQLModel。
并且同时,✨ 它也是一个 Pydantic 模型 ✨。您可以使用继承来定义所有数据模型,同时避免代码重复。这使得它与 FastAPI 一起使用非常容易。
许可协议
本项目采用 MIT 许可协议 许可。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
sqlmodel_slim-0.0.22.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 58811d30c7be784940f510632aba3e37ecec930a73afd9a95d753815603df120 |
|
MD5 | eb4eb5aad03bd7165637a7033b186ebf |
|
BLAKE2b-256 | 655f60dc550acec21849879d0d14837b8915f1799bacd0724c5f42b3c5954162 |
sqlmodel_slim-0.0.22-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2a01edc511c9630e9288c6946f54c528a296e9e90d8703ca9efd8d24a7b56803 |
|
MD5 | b808ca14a9f40641441ed23896a7be9a |
|
BLAKE2b-256 | e4efac0fe02f5f57aecef6fef38b9fc20bc508c7e0aa8e7a8236b377ada6196c |