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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---