Aaron Spike wrote:
>> And now to access a person's photo I have to do "person.photo.photo". Is
>> there anyway I can do "person.photo" instead and still have it lazy load
>> the photo? I could make a getPhoto() method on the class but is a
>> property possible?

from my recent work with Hibernate ive learned that hibernate does in fact
have the ability to create a relationship to another table, where you get
just a scalar reference back, such as a string, number or a date.  I think
it might be worthwhile for SA to have an enhancement that supports this
pattern.  it would probably create a mapped class behind the scenes that
is somehow proxied so that you just deal with the scalar attribute you
want (bu t this implies that someone might want to get at that hidden
mapped object too...).

> I read through the advanced mapper stuff in the docs a few more times
> and I think I've got a start in the right direction. Just want to make
> sure I'm not missing something or misunderstanding the concequences.
>
> persons_join = join(persons_table, photos_table,
>                persons_table.c.id==photos_table.c.person_id)
> personmapper = mapper(Person,persons_join,
>                properties={'photo':deferred(photos_table.c.photo),
>                    'id':[persons_table.c.id,photos_table.c.person_id]})

good thinking.  although this will always join against the photos table
which produces a more complicated query and also wont load any person at
all who does not have a photo.  not sure if thats a problem here.   id
almost rather go with an approach that proxies at the object level, like
the Photo class would have a __call__() method that gives you the "photo"
attribute, for example:

  person = session.query(Person).get(5)
  photo = person.photo()

this is headed towards the enhancement im thinking of.

> Anything I should watch out for?

falling pianos are a good thing to look out for.  that and, if theres a
person with no photo, or a person with more than one photo would load two
person rows....

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to