On Apr 17, 2007, at 3:19 PM, jason kirtland wrote:
> > Michael wrote: >> attached is an approach that uses just the tiniest amount of >> awareness of how a mapper works, to do the whole optimized >> loading scenario ahead of time, and you get an object with your >> two distinct "pro" and "con" relationships, no list decoration >> or anything needed. the appropriateness of this approach comes >> from the fact that your optimization case is a load-time >> optimization, therefore put the complexity at load time (which >> is easier to deal with since it doesnt have to be concerned >> with collection mutability). > > This is great! So much simpler! > > I'm wondering, when storing partitioned instances: > >> instance.pro.append(class_mapper(Position)._instance(context, > row, None)) > > ...does this need to go through the instrumented append() method or > can I add them through my own, non-list method? (When these > mini-collection lists are backed by a collection class that manages > ordering attributes, it's super useful to be able to differentiate > between appends coming from from database load vs user code.) yes actually the way the eager loaders append is something like this: if isnew: appender = util.UniqueAppender(l.data) # store appender in the context selectcontext.attributes[(instance, self.key)] = appender then they append() to the appender, which operates on the underlying data. its better that way so that events arent firing off (the two kinds of events currently are backrefs and session cascade operations for save()/update()). you would want to store your UniqueAppender under an attribute key of your own and use it if one is available (or you can create it based on the "isnew" flag, which says that this parent row is the first row with the particular entity identity). --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---