@memoized_property is a handy tool, and works simply, just clear out __dict__ of that key and it's reset.
since you're looking to work in python, the total sales are just: @memoized_property def total_sales(self): # This should be the sum of all Album sales for this Artist. It should # be updated as soon as/just after a new Album is added or an Album's # sales is updated. return sum([album.sales or 0 for album in self.albums]) the events you need are simple, just whenever "sales" or "artist" (ideally you'd name this in the singular since it is many-to-one) change, pop the "total_sales" out of the dict: from sqlalchemy.orm import validates class Album(Base): # ... @validates("sales") def _update_sales(self, key, value): if self.artist is not None: self.artist.__dict__.pop('total_sales', None) return value @validates("artist", include_removes=True) def _update_artist(self, key, artist, is_remove): artist.__dict__.pop('total_sales', None) return artist On Aug 6, 2012, at 4:08 AM, jeetu wrote: > My problem scenario is analogous to the following. I have an Artist table and > an Album table. Each artist can have multiple albums with sales of each > album. The artist also has a total_sales column which is basically a > cumulative of album's sales for that artist. I tried reading about attribute > events and memoized property but I am unable to get it integrated with my > code. I tried to achieve something like > https://groups.google.com/forum/?fromgroups#!topic/sqlalchemy/o_KxuHwz4WQ. > But my lack of thorough understanding of decoraters and sqlalchemy is proving > to be a hindrance. My example code (heavily borrowed from resources on > internet and sqlalchemy group) is http://pastebin.com/vhRTcrWV > Just for information if at all it matters:n my actual code I am using > toscawidgets (inside turbogears) and dynamic forms for creating Albums > table's values and Artist's values on a single page. > > PS: I hope it is not sounding like homework > > > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/sqlalchemy/-/CcGMUZ2UHSYJ. > To post to this group, send email to sqlalchemy@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.