SQLAlchemy 2.1 Beta 更新解析:psycopg3 成預設驅動與 asyncio 相依套件調整

作者:默思編輯部 發布:2026-07-14

近兩年打磨的一次重要迭代

SQLAlchemy 2.1 系列歷經近兩年的開發,2026 年陸續釋出多個 Beta 版本(1 月、4 月、6 月分別釋出 Beta 版本)。這次版本延續 2.0 系列建立的型別提示(typing)導向架構,在 Core 與 ORM 兩端都帶來強化,並持續擁抱較新的 Python 語法慣例。

PostgreSQL 預設驅動更換:psycopg2 → psycopg3

最值得注意的變化之一:PostgreSQL 方言(dialect)的預設 DBAPI 驅動,從長年慣用的 psycopg2 改為 psycopg(也就是 psycopg 第三版)。這個改動的關鍵理由是——psycopg 第三版內建原生的非同步(async)操作支援,不需要再仰賴額外的相容層或變通做法,讓 SQLAlchemy 的非同步 ORM 使用體驗更加原生、順暢。

greenlet 不再強制安裝

另一項務實的改動:過去 SQLAlchemy 用來支援 asyncio 的 greenlet 相依套件,會預設隨套件一起安裝;但 greenlet 並沒有針對所有平台架構發布對應的 wheel 檔案,而且對完全不使用 asyncio 功能的應用來說,這個相依套件根本用不到。2.1 版本把它改為選用相依,需要非同步功能的開發者,改用 sqlalchemy[asyncio] 這個安裝選項才會一併裝進 greenlet——這種「按需安裝」的設計,能減少不需要的相依套件負擔,也降低了在某些平台上安裝失敗的風險。

對現代 Python 語法的持續擁抱

SQLAlchemy 2.1 系列也持續強化對較新 Python 語法慣例的支援,包括 dataclasses(資料類別)整合、更完整的型別提示,以及對 Python 免鎖模式(free-threading,也就是前面提到的 No-GIL)的持續相容調整——這反映出主流 ORM 框架,正在跟進整個 Python 生態系近幾年在型別系統與並行模型上的演進方向,而不是原地踏步。

對開發者的實務意義

對於用 FastAPI(本身就大量依賴非同步操作)搭配 SQLAlchemy 開發後端服務的 Python 開發者而言,psycopg3 成為預設驅動這件事特別值得關注——如果專案原本手動指定使用 psycopg2 或搭配 asyncpg 這類第三方非同步驅動,升級前建議先確認自己的資料庫連線設定是否與新版預設行為相容,尤其是連線字串(connection string)裡如果明確寫死了驅動名稱,需要對照最新文件確認是否要調整。這種驅動層級的變化雖然不會直接影響業務邏輯程式碼,但屬於升級大版本時容易被忽略、卻可能導致連線失敗的細節。