On Dec 8, 2008, at 2:18 PM, channing wrote:

>
> I'd like to be able to map read-only attributes based on a join, but
> without mapping the class to a joined table.
>
> ----
>
> Given this structure:
>
> class unit:
>    pass
>
> class recsite:
>    pass
>
> units = Table('units',metadata,
>                      Column('unit_id',Integer,
>                                   primary_key=True,nullable=False),
>                      Column('recsite_id',Integer,
>                                   ForeignKey(recsites.c.recsite_id),
>                                   nullable=False))
>
> recsites = Table('recsites',metadata,
>                          Column('recsite_id',Integer,
>
> primary_key=True,nullable=False),
>                          Column('depth',Integer,nullable=False))
>
> mapper(unit,units)
> mapper(recsite,recsites)
>
> ----
>
> Is there a way to map a 'depth' property for unit, without mapping
> unit to units.join(recsites)? I tried adding a ColumnProperty to the
> mapper, but while it succeeds, it returns the wrong value:
>
> mapper(unit,units,
>              properties={'depth':ColumnProperty(recsites.c.depth)})
>
> I can't find anything in the documentation for ColumnProperty that
> tells me how to specify the join condition.

you would need to specify a correlated scalar select to  
ColumnProperty.  The second example in 
http://www.sqlalchemy.org/docs/05/mappers.html#sql-expressions-as-mapped-attributes
 
  illustrates this.

An alternative approach would be to build a relation() to a "recsites"  
mapper, but to use the association proxy so that you only see the  
"depth" attribute.    Current docs for that are here 
http://www.sqlalchemy.org/docs/05/reference/ext/associationproxy.html 
   but there's some errors in the examples on that page; I understand  
a new version of that document will be available shortly.



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