Michael Bayer ha scritto:
> SelectResults is used for mapped classes, the columns that are to be
> selected for a particular mapping are fixed. theres no reason youd
> want to be able to change the column clause.
>
>
I try to do an example:
create table macrocategory ( code char(3),
description text );
create table subcategory ( code char(3),
description text,
cod_macrocategory char(3) reference
macrocategory(code) );
create table category ( code char(3),
description text,
cod_subcategory char(3) reference
subcategory(code) );
This is my example_mapper.py
class _Subcategory(DomainObject, SferaDomainObject):
def __str__(self):
return self.code
assign_mapper(context,
_Subcategory,
tbl['subcategory'],
column_prefix = 'subcategory_'
extension = SelectResultsExt()
properties = {'category' : relation( _category ),
)
class _Category(DomainObject, SferaDomainObject):
def __str__(self):
return self.code
assign_mapper(context,
_Category,
tbl['category '],
extension = SelectResultsExt()
column_prefix = 'category_',
)
class Macrocategory(DomainObject, SferaDomainObject):
def __str__(self):
return self.code
def search( self, **kw ):
"""
Generic Search function
"""
by_where_clause = {}
where_clause = []
for k,v in kw.items():
if k in ('macrocategory_',\
'subcategory_code',\
'subcategory_description',\
'subcategory_cod_macrocategory',\
'category_code',\
'category_description',\
'category_cod_subcategory'):
by_where_clause[ k ] = v
elif k == 'macrocategory_description':
where_clause.append(
self.c.macrocategory_description.op('ilike')('%'+v+'%')
else:
raise ValueError, "Unknow search parameter"
if where_clause:
return self.select_by( **by_where_clause ).select( and_(
*where_clause )
else:
return self.select_by( **by_where_clause )
assign_mapper(context,
Macrocategory,
tbl['macrocategory '],
extension = SelectResultsExt()
column_prefix = 'macrocategory_',
)
Why i do that?
My primary purpose is to get from mappers the correct reference
"from-to" table and have the simplest select qry using select_by function.
Obviously the search function was the unique select function over these
3 tables and i must pass some parameters to it for retrieving some field
or other fields.
If i pass a first level table field the select_by do correclty a
select from macrocategory
If i pass a second level table field the select_by do correclty a
select from macrocategory join subcategory
and so on for select from macrocategory join subcategory join category
The where_clause was compiled correclty, *BUT* in this structure the SA
get always all field only from first mapper and sometimes i want field
from all three mapper so all programmes mus do search traversing this 3
mappers mus everytime build this own search function and finally i have
a lot of redundat code like this.....
select([filed, field, field], from_obj=[
Macrocategory.join(_Subcategory,
Macrocategory.c.code == _Subcategory.c.cod_macrocategory
).join(_Category, bla bla bla
Try to imagine my case have over 10 tables whith a lot of condition for
primary key and condition...
my work for maintain this library in a pythonic form is enormous
This problem is olny mine? i'm doing an incorrect use of SA ?
Thank's
Glauco
> Hibernate does have the ability to stick arbitrary columns into
> mapping queries which are returned as scalars. im not sure if SA
> needs this so much as we have the entire SQL construction facility
> that can be used on its own (hibernate doesnt).
>
>
> On Mar 7, 2007, at 4:02 AM, Glauco wrote:
>
>
>> Glauco ha scritto:
>>
>> <CUT>
>>
>>
>>
>> The simplest example is to specify columns to select on a generated
>> qry
>> (not all field of all tables involved in the generated qry).
>>
>> does the sqlalchemy.ext.selectresults.SelectResults object have
>> something like "column clause" parameter of select function?
>>
>>
>>
>> Thank's
>> Glauco
>>
>>
>>
>>
>> --
>> +------------------------------------------------------------+
>> Glauco Uri - Programmatore
>> glauco(at)allevatori.com
>>
>> Sfera Carta Software® [EMAIL PROTECTED]
>> Via Bazzanese,69 Casalecchio di Reno(BO) - Tel. 051591054
>> +------------------------------------------------------------+
>>
>>
>>
>>
>
>
> >
>
>
--
+------------------------------------------------------------+
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
-~----------~----~----~----~------~----~------~--~---