2014-04-18 64 views
0

我有兩個聲明性的sqlalchemy模型。Python 3和sqlachemy模型的屬性

class Users(Base): 
    __tablename__ = 'Users' 
    ID = Column(INTEGER, primary_key=True) 
    _Activities = relationship('Activities', lazy='subquery') 

class UserCourseActivities(Base): 
    __tablename__ = 'Activities' 

    ActivityID = Column(INTEGER, primary_key=True) 
    UserID = Column(INTEGER, ForeignKey('Users.ID')) 
    ActivityCount = Column(INTEGER) 

有沒有辦法讓用戶的每一個實例總共有(活動計數)在其__dict__?我嘗試添加其他類屬性,但我擔心我可能不得不使用古典映射。用戶表有很多關係,使聲明性方法更具吸引力。有什麼辦法可以做到這一點?

我可以使用@column_property裝飾器嗎?我不知道如何實際使用它。

回答

0

原來,該列屬性不是一個裝飾器。

activity_total = column_property(
    select(
     [func.sum(
      Activities.ActivityCount 
     ) 
     ]).\ 
     where(Activities.UserID==PK1).\ 
     correlate_except(Activities) 
) #This is officially the ugliest thing I have ever seen 

此'列'也顯示在用戶實例__dict__中。