On Nov 30, 7:57 am, Stef Mientki <stef.mien...@gmail.com> wrote:
> hello,
>
> I'm trying to build some (not trivial) queries and encounter a number of 
> problems
> my first problem is that a space makes a huge difference,
> is that to be expected ?
>
> this *works* as (I) expected
>     Select = "Name, Test_Count"
>     Rows = DB ( Query ).select ( Select )

it is select(*fields, **attributes)
where fields is a alist and attributes is a dictionary
(according to python not web2py)

>     print Rows[0]
> <Row {'_extra': <Row {'Test_Count': 1000, 'Name': u'breath_algvm'}>}>

here you are just lucky that the internal processing builds something
similar to what is required for the real DB query, you can see it
using:
DB(Query)._select(Select) # note the underscore

> but removing the space from the string, gives me an *unexpected result*
>     Select = "Name,Test_Count"     ###  <-- space removed
>     Rows = DB ( Query ).select ( Select )
>     print Rows[0]
> <Row {'_extra': <Row {'Name,Test_Count': u'breath_algvm'}>}>
>
> The second problem, has to do with what's the preferred substitution, string 
> or objects ?
>
> this *works* :
>     Select = DB.VraagList.Name
>     Rows = DB ( Query ).select ( Select )
>     print Rows[0]
>
> This *doesn't work*
>     Select = DB.VraagList.Name, DB.VraagList.id

python (not web2py) creates a tuple with both fields
which is usable as explained below

>     Rows = DB ( Query ).select ( Select )

the correct call (python's rules) would be:
Rows = DB  ( Query ).select( *Select )

>     print Rows[0]
>
> for the record, this is the Query in all the above
>     PID = 1018
>     Query = ( DB.VraagList.id == DB.Opnamen.VLID ) & \
>             ( DB.Opnamen.PID == PID )
>
> thanks,
> Stef Mientki

Reply via email to