如何理解python的sqlalchemy這種orm框架?

時間 2021-06-05 16:31:46

1樓:

回答這個問題之前,首先讓我們回顧一下,乙個關聯式資料庫中都有什麼?沒錯,簡單來說,就是一張張表。表中又有什麼?

行和列,一行就是一條記錄,一列就代表著一條記錄的某個屬性。舉例來說,乙個學籍資料庫可能包含一張學生資訊表,表中每行記錄著乙個學生的資訊,由很多列組成,每一列表示學生的乙個屬性,比如姓名、年齡、入學時間……

有沒有覺得和python中的類、例項物件以及成員屬性的概念有某種對映關係呢?哈,沒錯,orm其實就是把錶對映成了類,它包含一些成員屬性,相當於乙個模板,通過這個模板,我們給相應的屬性填上乙個值,可以建立乙個例項物件也就是一條記錄。然後把常用的一些SQL操作封裝成對應的方法,比如select封裝為get方法,這樣就實現了乙個orm。

當然,如果要自己寫乙個orm,技術層面上,你還需要去理解什麼是元類、如何使用元類,以及一些有關描述器的知識。

手機黨,不方便打字,就說這些了。更多的內容,題主可以自行google,也可以在github上找一些其他人實現的輕量級orm看一看

如何理解 Python 的 Descriptor?

一起吃鰻魚飯啊 簡單來說,對與既支援函式式程式設計又支援物件導向式程式設計的語言來說,統一函式和類方法有兩種解決方案,一種是像Ruby一樣所有的callable都是類方法,或者像Python這樣,類方法只是帶有物件的特殊函式,descriptor就是為了解決這個而引入的。 影之心 描述器有三個特殊方...

如何理解Python裝飾器?

這是我見過的最好的Python裝飾器教學文章 Primer on Python Decorators Real Python 假設我們有乙個 decorator defcount time name def decorator func def arg,kw start time time func...

如何理解python的類與物件?

rainzee 類 class 是抽象化的概括 物件 object 是具象化的例項 上述是一切思想的根本,任何物件導向程式設計都遵守這個思想,下面來具體理解。當我們想描述一類事物的時候,我們首先需要尋找這一類事物的共同點,例如,學生 很顯然,每個學生都至少擁有 姓名 年齡 無論是小明,還是小紅,所以...