On Sun, 13 Jul 2008 00:18:35 -0400
Kyle Schaffrick <[EMAIL PROTECTED]> wrote:

> > To setup the eagerness of "cs" at the exact point of lazy load,
> > the public API that allows this is via "lazy='dynamic'", which would
> > allow:
> > 
> > a = sess.query(A).first()
> > print a.bs.option(eagerload('cs')).first()
> > 
> > But that changes the "lazyness" of "bs" considerably.  
> 
> This seems like it might be pointing to a solution, but, what do you
> mean by the last statement?

Er, I think I misread you the first time, this looks like it would
involve modifying the mapper, to turn "bs" into a Query factory.
Wouldn't that would break all the rest of the code that treats "bs" like
a collection? Also, would sess.query(A).option(eagerload('bs')) still
work?

Basically what would be ideal in my situation, is if the instrumented
attributes for relations had some method for providing a loading hint,
for ex:

  a = ses.query(A).first()
  
  # ...sometime later, in another part of the code, I know I'll be
  # iterating over "a.bs" and touching "cs" on each one, so I do:
  instance_option(a, eagerload('cs'))

  [ c.blah for c in a.bs ]   # load of bs eagerloads cs

As I mentioned, in my situation, the query at the top has no knowledge
of what class A is, nor whether or not it needs loading options.

Hoping this is a little more clear...

-Kyle

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to