SQL煉金術
Python SQL 工具包與物件關係映射器
介紹
SQLAlchemy 是 Python SQL 工具包和物件關係映射器,為應用程式開發人員提供 SQL 的全部功能和靈活性。 SQLAlchemy 提供了一整套眾所周知的企業級持久化模式,專為高效、高效能的資料庫存取而設計,並適應簡單且 Python 的領域語言。
SQLAlchemy 的主要功能包括:
- 工業級 ORM,以身分映射、工作單元和資料映射器模式為核心建置。這些模式允許使用聲明性配置系統透明地持久化物件。領域模型可以自然地建置和操作,並且變更會自動與當前事務同步。
- 以關係為導向的查詢系統,明確地公開 SQL 的全部功能,包括連接、子查詢、關聯以及物件模型方面的大多數其他功能。使用 ORM 編寫查詢所使用的關聯式組合技術與編寫 SQL 時所使用的技術相同。雖然您可以隨時使用文字 SQL,但實際上從來不需要它。
- 一個全面且靈活的相關集合和物件的預先載入系統。集合緩存在會話中,並且可以在單獨訪問時加載,使用聯接一次性加載,或者透過跨完整結果集的每個集合查詢來加載。
- 一個Core SQL建置系統和DBAPI互動層。 SQLAlchemy Core 與 ORM 分離,本身就是一個完整的資料庫抽象層,並且包括可擴展的基於 Python 的 SQL 表達式語言、模式元資料、連接池、類型強制和自訂類型。
- 所有主鍵和外鍵約束都被假定為複合的和自然的。代理整數主鍵當然仍然是常態,但 SQLAlchemy 從未假設或硬編碼到此模型。
- 資料庫自省和生成。資料庫模式可以一步「反映」為表示資料庫元資料的 Python 結構;然後,這些相同的結構可以立即產生 CREATE 語句 - 全部在 Core 內,獨立於 ORM。
SQLAlchemy 的理念:
- 隨著大小和效能變得越來越重要,SQL 資料庫的行為越來越不像物件集合;隨著抽象變得越來越重要,物件集合的行為越來越不像表格和行。 SQLAlchemy 旨在適應這兩個原則。
- ORM 不需要隱藏「R」。關係資料庫提供了豐富的、基於集合的功能,應該完全公開這些功能。 SQLAlchemy 的 ORM 提供了一組開放式模式,允許開發人員在領域模型和關係模式之間建立自訂中介層,從而將所謂的「物件關係阻抗」問題變成遙遠的記憶。
- 在所有情況下,開發人員都做出有關物件模型和關係模式的設計、結構和命名約定的所有決策。 SQLAlchemy 僅提供自動執行這些決策的方法。
- 使用 SQLAlchemy,不存在「ORM 產生錯誤查詢」之類的情況 - 您保留對查詢結構的完全控制,包括如何組織聯結、如何使用子查詢和相關性、請求哪些列。 SQLAlchemy 所做的一切最終都是開發人員發起決策的結果。
- 如果問題不需要 ORM,則不要使用 ORM。 SQLAlchemy 由核心和獨立的 ORM 元件組成。 Core 提供了完整的 SQL 表達式語言,允許使用 Pythonic 建立 SQL 結構,直接呈現為目標資料庫的 SQL 字串,傳回本質上是增強型 DBAPI 遊標的結果集。
- 交易應該成為常態。使用 SQLAlchemy 的 ORM,在呼叫 commit() 之前,不會有任何內容進入永久儲存。 SQLAlchemy 鼓勵應用程式創建一致的方法來描述一系列操作的開始和結束。
- 切勿在 SQL 語句中呈現文字值。最大程度地使用綁定參數,使查詢優化器能夠有效地快取查詢計劃,並使 SQL 注入攻擊不再成為問題。
文件
最新文件位於:
https://www.sqlalchemy.org/docs/
安裝/要求
完整的安裝文件位於安裝部分。
取得協助/開發/錯誤報告
請參閱 SQLAlchemy 社群指南。
行為守則
最重要的是,SQLAlchemy 非常強調使用者和開發人員之間禮貌、深思熟慮和建設性的溝通。請參閱行為準則中我們目前的行為準則。
執照
SQLAlchemy 在 MIT 許可證下分發。