跳至內容

功能

專為 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% 類型註解程式碼庫。