Michael Bayer ha scritto:
> 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).
>
Yes, but i lost generative methods filter_by
>
>> 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()
>
Yes in fact this is only an example.. my purpose is to implement this
system for do generic search function over complex mapper , for example
my first work is a mapper over 19 tables with 1 relation n:m and 2 1:n......
i need some features from select function and other from generative qry
over mapper... but it's difficult to concentrate all cases in one select
function.
Glauco
--
+------------------------------------------------------------+
Glauco Uri - Programmatore
glauco(at)allevatori.com
Sfera Carta Software® [EMAIL PROTECTED]
Via Bazzanese,69 Casalecchio di Reno(BO) - Tel. 051591054
+------------------------------------------------------------+
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---