2013-12-15 43 views
1

在我的Python包中,我定義了一些Sqlalchemy實體類。所有類都使用ORM聲明性技術進行定義。大多數類使用常規屬性和關係直接映射到數據庫表(以1:1的方式),只有幾個類使用簡單的hybrid_attributes。Python將實用函數添加到SqlAlchemy實體類

當您查看Elixir或Camelot等其他一些軟件包時,它們具有補充的sqlalchemy功能,可以將附加屬性附加到每個實體實例上,提供便利操作。例如,to_dict(),它將實體實例複製到字典和from_dict(),它試圖從字典創建一個新的實體實例。

什麼是最簡單的方法去手動添加這樣的功能到我自己的實體類?尋找通用方法,這些方法對於最常見的用途將有最少的注意事項。


使用元數據/映射器來查找適當的Column鍵集? (for to_dict)

類方法?靜態方法?

子類declaratory_base from sqlalchemy.ext.declarative

mixin怎麼樣?

回答

0

我挖的源藥劑,我發現他們是如何實現這些助手......

功能被定義爲,是爲了被繼承父基類普通實例方法,雖然仙丹Entity使用元類。

從這個實現中,我認爲我可以從sqlalchemy的內置Base子類繼承聲明類,並簡單地將這些方法添加到我的自定義類中。不論藥劑的功能是否會按原樣工作,我還沒有測試過。

都使用的功能:

mapper = sqlalchemy.orm.object_mapper(self) 

,然後使用該映射對象的訪問一切。在SA-0.8及更高版本中,object_mapper仍然是推薦的方法嗎?任何我應該知道的警告?

相關問題