跳到内容

特性

FastAPI 设计

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

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

然而,SQLModel 完全独立于 FastAPI,可以与任何其他类型的应用程序一起使用。您仍然可以从其功能中受益。

只是现代 Python

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

如果您需要 2 分钟的时间来回顾如何使用 Python 类型(即使您不使用 SQLModel 或 FastAPI),请查看 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% 类型注释代码库。