跳到内容

特性

专为 FastAPI 设计

SQLModel 由 FastAPI 的同一位作者创建。

它遵循相同的设计理念,旨在成为在 FastAPI 应用程序中与 SQL 数据库交互最直观的方式。

尽管如此,SQLModel 完全独立于 FastAPI,可以与任何其他类型的应用程序一起使用。您仍然可以受益于其特性。

纯粹的现代 Python

它完全基于标准现代 Python 类型注解。无需学习新语法。只是标准的现代 Python。

如果您需要一个关于如何使用 Python 类型(即使您不使用 SQLModel 或 FastAPI)的 2 分钟复习,请查看 FastAPI 教程部分:Python 类型介绍

您还将在教程 - 用户指南:第一步部分看到 20 秒的复习。

编辑器支持

SQLModel 旨在易于使用和直观,以确保最佳的开发体验,随处都有自动补全。

这是您的编辑器可能如何帮助您的:

您将在编写最少量代码的同时获得所有内容的补全。

您无需猜测模型中不同属性的类型,它们是否可能是 None 等。您的编辑器将能够帮助您完成所有工作,因为 SQLModel 基于 标准 Python 类型注解

SQLModel 采用PEP 681 进行 Python 类型注解,以确保最佳开发体验,因此即使在创建新的模型实例时,您也会获得内联错误和自动补全。

简洁

SQLModel 对所有内容都有合理的默认值,并且随处都有可选配置

但默认情况下,它都“即开即用”

您可以从最简单(也是最直观)的数据类型注解开始。

之后,您可以使用 SQLAlchemy 和 Pydantic 的所有强大功能来微调一切。

基于 Pydantic

SQLModel 基于 Pydantic,并保持相同的设计、语法和理念。

实际上,✨ 一个 SQLModel 模型也是一个 Pydantic 模型。✨

为了实现这一点,进行了大量的研究和努力。

这意味着您将获得 Pydantic 的所有功能,包括自动数据验证序列化文档。您可以像使用 Pydantic 一样使用 SQLModel。

您甚至可以创建不代表 SQL 表的 SQLModel 模型。在这种情况下,它们将与 Pydantic 模型相同

这特别有用,因为现在您可以创建一个继承自另一个非 SQL 模型的 SQL 数据库模型。您可以使用它来大量减少代码重复。它还将使您的代码更加一致,改进编辑器支持等。

这使其成为在 FastAPI 应用程序中处理 SQL 数据库的完美组合。🚀

您将在教程后面了解更多关于组合不同模型的信息。

基于 SQLAlchemy

SQLModel 也基于 SQLAlchemy,并将其用于所有方面。

实际上,✨ 一个 SQLModel 模型也是一个 SQLAlchemy 模型。✨

为了实现这一点,进行了大量研究和努力。特别是,在使单个模型同时成为 SQLAlchemy 模型和 Pydantic 模型方面,进行了大量的努力和实验。

这意味着您将获得 SQLAlchemy 的所有强大功能、鲁棒性和确定性,它是Python 中使用最广泛的数据库库

SQLModel 提供自己的实用程序来改善开发体验,但实际上,它使用所有 SQLAlchemy 功能。

您甚至可以组合 SQLModel 模型和 SQLAlchemy 模型。

SQLModel 旨在满足最常见的用例,并尽可能简单方便地处理这些情况,提供最佳的开发体验。

但是当您遇到需要更复杂功能的更奇特的用例时,您仍然可以直接将 SQLAlchemy 插入 SQLModel 并在您的代码中使用其所有功能。

经过测试

  • 100% 测试覆盖率(目前为 97%,在未来几天/几周内将达到 100%)。
  • 100% 类型注解代码库。