On Apr 3, 2007, at 5:58 AM, Glauco wrote:
> In [1]: t = TipoFigura() > > In [1]: t.mapper.mapped_table > Table('tipo_figura',DynamicMetaData(), > Column('codice',PGChar(length=1),primary_key=True,nullable=False), > Column('descrizione',PGText > (length=None),nullable=False),schema=None) > > > In [2]: s = select( [t.c.codice], from_obj=[t.mapper.mapped_table], > use_labels=True) > > In [3]: ret = session.query( t.mapper ) > > In [4]: ret.instances( s.execute() ) > 2007-04-03 11:27:26,575 sqlalchemy.engine.base.Engine.0x..74 INFO > SELECT tipo_figura.codice AS tipo_figura_codice > FROM tipo_figura > > > /home/xxxx/build/bdist.linux-i686/egg/sqlalchemy/engine/base.py in > _convert_key(self, key) > NoSuchColumnError: "Could not locate column in row for column > 'tipo_figura.descrizione'" > > > > 1) Why this error?? the query is perfect and there is n reason > for check presence of the "descrizione" column. (the problem is > the same i found in previous mail) the "descrizone" column is part of your mapping so the mapper will be searching for it. understand that session.query() is *always* going to load instances of the primary class - your "codice" column is in *addition* to the main mapped class (but in this case, its already part of it). if you just want to select "codice" alone with no mapped objects, execute the select() statement by itself without using the ORM (i.e. session.query). > > > 2) and why if i put all columns i lost use_label features ? > > s = select( [t.c.codice, t.c.descrizione], from_obj= > [t.mapper.mapped_table], use_labels=True) > > ret.instances( s.execute() )[0].c.keys() > > 2007-04-03 11:39:56,921 sqlalchemy.engine.base.Engine.0x..74 INFO > SELECT tipo_figura.codice AS tipo_figura_codice, > tipo_figura.descrizione AS tipo_figura_descrizione > FROM tipo_figura > 2007-04-03 11:39:56,921 sqlalchemy.engine.base.Engine.0x..74 INFO {} > > Out[15]: ['codice', 'descrizione'] > the "instances" method does not return result rows - it returns object instances. the "c" attribute there is off of one of your mapped classes and the two column names are the columns off of your original Table object. to get the columns you want s = select( [t.c.codice, t.c.descrizione], from_obj= [t.mapper.mapped_table], use_labels=True).execute()[0].keys() --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---