在 Python 資料庫互動領域, SQLAlchemy 作為一個強大的物件關係對映器(ORM)佔據著重要地位,但開發者們經常尋求增強其功能的方法。 Advanced Alchemy 作為一個配套庫應運而生,旨在簡化資料庫操作,提供儲存庫、Web框架整合和最佳化功能。然而,社群對採用這個工具的反應既有熱情也有猶豫。
實際生產環境中展現出的潛力
Advanced Alchemy 已在生產環境中證明了其價值,使用者稱讚其能夠填補 Python 生態系統中的空白。該庫提供了一些開發者在其他框架或語言中所熟悉但在 Python 中缺失的功能。特別是像直觀的查詢語法(account = await accounts_service.get_one_or_none(*filters, id=account_id)
)這樣的特性,受到了那些已將其整合到工作流程中的開發者的讚賞。對於 Litestar 框架的使用者來說, Advanced Alchemy 作為官方的 SQLAlchemy 整合方案,一旦正確配置,就能創造出使用者所描述的神奇體驗。
「我在生產環境中使用這個庫;它有很多很棒的工具和功能,這些是我在 Python 中找不到的,是我從其他框架或語言中懷念的...特別是,如果你成功地設定好了你的服務和儲存庫,那麼很多事情就會魔法般地發生。」
社群反饋
積極反饋:
- 在生產環境中執行良好
- 提供了其他 Python 庫所缺少的功能
- 與 Litestar 框架整合效果極佳
- 應用關注點分離清晰
- 適用於非網路應用場景的靈活性
顧慮:
- 文件質量需要改進
- 相比其他替代方案學習曲線較陡
- 示例未能清晰展示相較於普通 SQLAlchemy 的優勢
- 作為一個生態系統的一部分,有些人認為過於固執己見
文件挑戰成為採用障礙
儘管功能強大, Advanced Alchemy 在文件方面面臨批評。多位使用者指出難以理解如何有效地實施該庫,一位生產環境使用者特別提到文件質量不佳。庫的建立者已經承認了這些問題,並似乎願意改進文件質量。與 SQLModel 等更明確展示其優勢的替代方案相比,缺乏清晰的示例來展示 Advanced Alchemy 相對於普通 SQLAlchemy 的優勢,成為了採用的特殊障礙。
框架整合和架構考慮
Advanced Alchemy 在 Python Web 開發生態系統中的定位引發了關於架構方法的討論。一些開發者欣賞 Advanced Alchemy 實現的關注點分離(特別是與 SQLModel 相比,後者被一些人批評為混淆了應用程式不同部分之間的界限),而其他人則擔心解決方案過度工程化。一位評論者將 FastAPI 的生態系統( Advanced Alchemy 可以與之整合)比作 Django 的單人版本,認為由於其固執己見的性質可能導致後悔。
Advanced Alchemy 的關鍵特性
- 具有 CRUD 和批次操作的同步和非同步儲存庫
- 與 Web 框架的整合( Litestar、Starlette、FastAPI、Sanic、Flask )
- 自定義 alembic 配置和命令列介面
- 帶儲存後端支援的檔案物件資料型別
- 最佳化的 JSON 型別,包括 Oracle 支援
- UUID6/UUID7 和 Nano ID 整合
- 支援多種資料庫後端:
- SQLite、PostgreSQL、MySQL、Oracle
- Google Spanner、DuckDB、MS SQL Server、CockroachDB
超越 Web 應用
來自庫建立者的一個有趣見解強調, Advanced Alchemy 旨在服務於超越 Web 應用的用例。這種更廣泛的適用性允許開發者以可重用的方式整合資料庫互動邏輯,適用於各種 Python 應用程式,而不僅僅是 Web 服務。對於那些處理多種應用型別並希望保持一致資料庫訪問模式的開發者來說,這種靈活性可能提供顯著價值。
總結來說, Advanced Alchemy 代表了 SQLAlchemy 的一個強大擴充套件,已經在生產環境中證明了其價值,同時仍然面臨採用挑戰。對於願意投入時間理解其功能的開發者來說,儘管存在文件限制,它仍然提供了顯著的生產力優勢。隨著庫及其文件的成熟, Advanced Alchemy 可能會成為 Python 開發者尋求最佳化資料庫互動的越來越有吸引力的選擇。