> -----Original Message----- > From: sqlalchemy@googlegroups.com > [mailto:[EMAIL PROTECTED] On Behalf Of Faheem Mitha > Sent: 04 December 2008 20:43 > To: sqlalchemy@googlegroups.com > Subject: [sqlalchemy] returning primary key of object without > know what it is called. > > > > Hi, > > I'm trying to figure out how to have an object return its primary key > without knowing what it is called. The docs in > http://www.sqlalchemy.org/docs/05/sqlalchemy_orm_mapper.html look > relevant, for example the function identity_key_from_instance > (see entry > from docs below), but I'm not clear about usage. The > functions on this > page look like they are meant to be used as method functions > of a mapper > object, but how should I construct such a mapper object? In my schema > file, I have lines like > > Mapper(Foo, foo_table) > > should I be returning an mapper object for use with > functions? Ie should I > be doing > > foo_mapper = Mapper(Foo, foo_table) > > or similar? The section module sqlalchemy.orm.mapper saya > > "This is a semi-private module; the main configurational API > of the ORM is > available in module sqlalchemy.orm." > > Does this mean it is not meant to be used in this fashion? > > Also, I don't understand what is meant by > > "This value is typically also found on the instance state under the > attribute name key." > > in the docs for identity_key_from_instance below. > > Please CC me on any reply. > Thanks and regards, Faheem. > >
You can get the mapper for a given instance using the sqlalchemy.orm.object_mapper function, and that mapper has a 'primary_key_from_instance' method. A generic primary_key function might look like this (untested): import sqlalchemy.orm as orm def get_primary_key(instance): mapper = orm.object_mapper(instance) return mapper.primary_key_from_instance(instance) Hope that helps, Simon --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---