Python ORM 方案一覽

2022-02-01 07:17:30 字數 1455 閱讀 4039

目錄摘取一段對orm的認識過程:

對於我,對orm的經歷了反反覆覆的愛恨交織過程。最早對其神奇之處的十分感嘆;而後又鄙視其生成sql方式;如今,適時適當的在專案中使用orm。

歸根結底,對orm態度的轉變,源於對其認識的不足。最早接觸orm源自django自帶的orm,用起來很爽。當時對sql並不熟悉,orm了卻了心頭一大痛點。後來使用flask,沒有自帶的orm,接觸了sqlalchemy,也是乙個很優秀的orm。當時,我對於orm的認識還是很淺薄,大概就認為orm乙個是資料庫物件的map,其次就是能夠生成sql查詢。

我們用orm,或者linq,而儘量減少sql的使用,是因為我們通過把sql這種嵌在**裡的字串資料,轉化成了**,也就意味著我們擁有了編譯時或者執行時的檢查,乃至編輯時的檢查 —— 各種 linter 很難檢測出字串中的sql語法或者語義錯誤,但可以在你撰寫 orm**時便提示你其中蘊含的語法/語義錯誤。這是非常偉大的乙個進步 —— 對於軟體工程來說,越早發現錯誤,消弭錯誤所花費的時間就越短。

誠然,orm是資料層中的更高的抽象,在工程上,抽象程度越高,對於擴充套件和維護將會更有利。當然,orm常被人詬病的一大理由就是程式生成的sql沒有原生的高效。的確,對於複雜的sql語句,使用orm的組合可能比原生的sql更不可讀或者不可維護。此時,我們就需要在專案中繼續使用raw sql的形式。

sqlobject是一種流行的物件關係管理器,用於為資料庫提供物件介面,其中表為類,行為例項,列為屬性。

sqlobject包含乙個基於python物件的查詢語言,使sql更抽象,並為應用程式提供了大量的資料庫獨立性。

優點:缺點:

download

document - 中文

storm 是乙個介於 單個或多個資料庫與python之間 對映物件的 python orm 。為了支援動態儲存和取回物件資訊,它允許開發者構建跨資料表的複雜查詢。stom中 table class 不需要是框架特定基類 的子類 。每個table class是 的sqlobject.sqlobject 的子類。

優點:缺點:

因為django的orm 是緊嵌到web框架的,所以就算可以也不推薦,在乙個獨立的非django的python專案中使用它的orm。

django,乙個最流行的python web框架, 有它獨有的 orm。 相比 sqlalchemy, django 的 orm 更吻合於直接操作sql物件,操作暴露了簡單直接對映資料表和python類的sql物件 。

優點:缺點:

優點:缺點:

sqlalchemy 採用了資料對映模式,其工作單元 主要使得 有必要限制所有的資料庫操作**到乙個特定的資料庫session,在該session中控制每個物件的生命週期 。

優點:缺點:

HTML標記一覽

標記 型別譯名或意義 作 用備註 檔案標記 檔案宣告 讓瀏覽器知道這是 html 檔案 開頭 提供檔案整體資訊 標題 定義檔案標題,將顯示於瀏覽頂端 本文 設計檔案格式及內文所在 排版標記 說明標記 為檔案加上說明,但不被顯示 段落標記 為字 畫 等之間留一空白行 換行標記 令字 畫 等顯示於下一行...

HTML 標記一覽

html 標記一覽 標記 型別譯名或意義 作 用備註 檔案標記 檔案宣告 讓瀏覽器知道這是 html 檔案 開頭 提供檔案整體資訊 標題 定義檔案標題,將顯示於瀏覽頂端 本文 設計檔案格式及內文所在 排版標記 說明標記 為檔案加上說明,但不被顯示 段落標記 為字 畫 等之間留一空白行 換行標記 令字...

sql語句一覽

select 從資料庫表中檢索資料行和列 insert 向資料庫表新增新資料行 delete 從資料庫表中刪除資料行 update 更新資料庫表中的資料 資料定義 create table 建立乙個資料庫表 drop table 從資料庫中刪除表 alter table 修改資料庫表結構 creat...