特性¶
为 FastAPI 设计¶
SQLModel 由 FastAPI 的同一位 作者 创建。
它遵循相同的设计和理念,并且被创建为在 FastAPI 应用程序中与 SQL 数据库交互的最直观的方式。
然而,SQLModel 完全独立于 FastAPI,可以与任何其他类型的应用程序一起使用。您仍然可以从其功能中受益。
只是现代 Python¶
它完全基于标准的 现代 Python 类型注释。无需学习新的语法。只是标准的现代 Python。
如果您需要 2 分钟的时间来回顾如何使用 Python 类型(即使您不使用 SQLModel 或 FastAPI),请查看 FastAPI 教程部分:Python 类型简介。
您还将在 教程 - 用户指南:第一步 部分看到 20 秒的回顾。
编辑器支持¶
SQLModel 的设计易于使用且直观,以确保最佳的开发体验,并提供随处的自动完成功能。
以下是您的编辑器可能如何帮助您
- 在 PyCharm 中
您将在编写最少代码的同时获得所有内容的补全。
您无需猜测模型中不同属性的类型,例如它们是否可以为 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% 类型注释代码库。