I will work on it, but heres a comment from the eager loading code  
that creates the OUTER JOIN:

# if the mapper is against a select statement or something, we cant  
handle that at the
# same time as a custom FROM clause right now.

and you have exactly that here.  so until I figure out how to expand  
eager loading's intelligence on this issue (which may take only half  
an hour), either forego the eager load or create the full query  
explicitly.


On May 22, 2007, at 10:06 AM, Juan Germano wrote:

> a_table = Table('a', metadata,
>     Column('id', Integer, primary_key = True),
>     Column('somedata', Unicode),
>     )
>
> b_table = Table('b', metadata,
>     Column('id', Integer, primary_key = True),
>     Column('somedatainb', Unicode),
>     Column('modtime', DateTime, default = datetime.utcnow()),
>     Column('a_id', Integer, ForeignKey('a.id')),
>     )
>
> c_table = Table('c', metadata,
>     Column('id', Integer, primary_key = True),
>     Column('somedatainc', Unicode),
>     Column('b_id', Integer, ForeignKey('b.id')),
>     )
>
> class A(object):
>     pass
> class B(object):
>     pass
> class C(object):
>     pass
>
> s = select([b_table, func.now().op('-')
> (b_table.c.modtime).label('dayssince')]).alias('b_table_b')
>
> assign_mapper(session.context, A, a_table,
>     properties = {
>             'bs':relation(B, lazy = None)
>         }
>     )
>
> assign_mapper(session.context, B, s,
>     properties = {
>         'a':relation(A, lazy = None),
>         'cs':relation(C, lazy = None),
>         }
>     )
>
> assign_mapper(session.context, C, c_table,
>     properties = {
>         'b':relation(B, lazy = None)
>         }
>     )
>
> The query should be this one:
>
> query = session.query(B)
> q2 = query.options(eagerload('a'))
> oj = q2.outerjoin('cs')
> oj2 = oj.filter(c_table.c.id == None)
> res = list(oj2)


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
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