On Sep 9, 2006, at 10:11 AM, Aaron Spike wrote:
> I've got a one-to-one relationship something like this.
>
> class Person(object):
> pass
> class Photo(object):
> pass
>
> persons_table = Table('persons', metadata,
> Column('id', Integer, primary_key=True),
> Column('firstname', String(255),
> Column('lastname', String(255),
> ...
> )
> photos_table = Table('photos', metadata,
> Column('person_id', Integer, primary_key=True),
> Column('photo',),
> ForeignKeyConstraint(['person_id'],
> ['persons.id'],'persons_photos_fk')
> )
>
> photomapper = mapper(Photo, photos_table)
> personmapper = mapper(Person, persons_table,
> properties={'photo':relation(Photo, uselist=False)})
>
> 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?
You might consider doing it like this:
class Person(object):
def _get_photo(self):
if self._photo is None:
return None
return self._photo.photo
def _set_photo(self = photo):
if self._photo is None:
self._photo = Photo()
self._photo.photo = photo
photo = property(_get_photo, _set_photo)
...
personmapper = mapper(Person, persons_table,
properties={'_photo':relation(Photo), uselist=False)})
That way you can use a normal lazy relationship, and can even access
the '_photo' attribute directly if you need to.
~ Daniel
-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users