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
-~----------~----~----~----~------~----~------~--~---

Reply via email to