2012-05-06 33 views
2

我正在與sqlalchemy合作,並且通過ruby/rails activerecord和datamapper學習orm,它有點不同。處理sqlalchemy模型的pythonic方法

所以,有一些模型,需要我認爲是類和實例級別的方法,我看到python不這樣做,或者我對python的理解水平到目前爲止不會這樣做。建立模型新方法的pythonic方法是什麼:裝飾器,創建模塊和導入方法等?我需要各種各樣的東西,所以沒有具體的編碼問題,只是一個普遍的要求,指導有效的方法來處理sqlalchemy模型,需要處理模型特定的方法。

注意:這不是一個辯論語言細節的邀請,我只提到我迄今爲止學到的知識,以及如何在新情況下將其應用到應用程序中。

+1

呃,Python確實有classmethods和instancemethods。你到底在找什麼? – Amber

+0

在指出教程或代碼示例方面的指導我錯過了也許找不到。我仍然處於rtfm的中間,並且認爲我至少會問一些問題。 – blueblank

+0

到目前爲止你做了什麼? – Amber

回答

6

您可以將模型方法作爲模型定義的類方法。例如:

class User(object): 

    @classmethod 
    def get_by_username(cls, dbsession, username): 
     return dbsession.query(cls).filter(cls.username==username).scalar() 

mapper(User, tables.auth_user, 
    properties={ 
     ... 
     } 
    ) 

允許您將該類用作表格特定方法的容器。像這樣:

user = User.get_by_username(session, "me") 
+0

這是我還沒有做到的事情;基本上得到正確的查詢,然後用一個整潔的界面將它們包裝到模型中。 – blueblank

+0

這是一個有用的例子,我想把它變成一個'get_by_ *'函數過濾器,以防止爲模型寫100次(就像一個例子,向前看) – blueblank

相關問題