Nice code... that part of orm.mapper.registry(klas).mapped_table is what I needed..
I'll pass it to my coworkers... :) Thanks On 6/13/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > well, if u dont want to write the same thing over and over, write one > wrapping function, and publish it here. > > e.g. something like (pseudocode): > def _get_pk_ordered( klas): > table = orm.mapper.registry(klas).mapped_table #or select_table > .... > return whatever-list-of-columns > > def get_by_pk( session, klas, **columns): > cols = _get_pk_ordered( klas) > assert len(cols) == len(columns) > return session.query(klas).get( [columns[c.name] for c in cols]) > > i guess, if its really useful, it may even go into some extension/ > module. > > > > > > Some of my coworkers had the same needs of Gaetan... And while > > > > I understand your solution, I figure out if SA could have it > > > > natively (detecting the presence of a dictionary)... > > > > > > > > Somethink like: > > > > > > > > > > > > query.get(dict(columnB='foo', columnA='bar') > > > > Lazy programmers are the best ones... :) > > > > > > why not query.get(**dict(columnB='foo', columnA='bar')) ? > > > it should work as is.. > > > > No, it doesn't... :/ > > > I have the following code: > > > > duplicata_table = Table('DUPLICATA', metadata, > > Column('dpl_loja', String(2), primary_key=True), > > Column('dpl_id', Integer, Sequence('gen_dpl_id'), > > primary_key=True), # other columns > > ) > > > > mapper(Duplicata, duplicata_table, properties={ > > 'loja': duplicata_table.c.dpl_loja, > > 'id': duplicata_table.c.dpl_id, > > # other proprerties > > }) > > > > Now trying your suggestion: > > >>> d = session.query(Duplicata).get(**dict(loja='02', id=9)) > > > > Traceback (most recent call last): > > File "<pyshell#17>", line 1, in <module> > > d = session.query(Duplicata).get(**dict(loja='02', id=9)) > > TypeError: get() takes exactly 2 non-keyword arguments (1 given) > > > > It expects me to do : > > >>> d = session.query(Duplicata).get(['02', 9]) > > > > Dealing with compound primary key of 2 columns is easy... but > > believe me: I have worked with some legacy database in the past > > which has tables with more than 9 columns in their primary key... > > !! > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---