In [4]: *[f for f in db['test_activity'].fields if f not in
fieldsBlackList]------------------------------------------------------------
   File "<ipython console>", line 1
     *[f for f in db['test_activity'].fields if f not in fieldsBlackList]
     ^
SyntaxError: invalid syntax


In [5]: (*[f for f in db['test_activity'].fields if f not in
fieldsBlackList])
------------------------------------------------------------
   File "<ipython console>", line 1
     (*[f for f in db['test_activity'].fields if f not in fieldsBlackList])
      ^
SyntaxError: invalid syntax


And it raise :

In [6]: db().select(*[f for f in db['test_activity'].fields if f not in
fieldsBlackList])
------------------------------------------------------------
SyntaxError: Set: no tables selected

In the select expression...

Richard


On Thu, Oct 21, 2010 at 10:27 AM, Richard Vézina <
[email protected]> wrote:

> Do I have to import a python module... In Ipython I was having synthax
> error with *[list comp exp of yesterday]
>
> Richard
>
>
>
>
>
> On Wed, Oct 20, 2010 at 10:31 PM, DenesL <[email protected]> wrote:
>
>> It really depends on how you select and which row indexing you want.
>>
>> To use db().select(...)
>> you have to specify table.field pairs in the select (without the db
>> part)
>> and to obtain the value of field1 you use row['table.field1'].
>>
>> If you are selecting fields from only one table the alternative would
>> be
>> db(db.table.id>0).select(*[list of fields without table prefix])
>> and each value is accessible as row['field'].
>>
>> To use db().select(...) as in your first post
>> you would build the comprehension with:
>> L=[ 'table2.%s'%f for f in db['table1'].fields if f not in blacklist ]
>>
>> which creates a list L with:
>> 'table2.field1', 'table2.field2', ...
>> where field1, field2, ... are field names from table1 that are not
>> black listed,
>>
>> and that list can be used directly in the select:
>> rows=db().select(*L) # note the * before the list
>>
>>
>> Hope this helps,
>> Denes
>>
>>
>> On Oct 20, 11:16 am, Richard Vézina <[email protected]>
>> wrote:
>> > Near of it... Your list comprehension is doing much simpler then I were
>> > doing what it should do.
>> >
>> > But the problem is still there...
>> >
>> > First the
>> >
>> > [f for f in db['table1'].fields if f not in BlackList]
>> >
>> > Return a list (['field1','field2', etc.]) without the rest of the
>> > information needed : "db.table"
>> >
>> > I was having in a :
>> >
>> > 'db.table.field1, db.table.field2, etc.'
>> >
>> > Second it is a list.
>> >
>> > My fundamental problem is that I try tu use the content of a variable as
>> > code for my app and that should not be a common thing in programmation
>> since
>> > I am not a experienced programmer.
>> >
>> > I don't know if I should do something else to resolve my problem...
>> >
>> > Basically I would do exactly the inverse of columns= do in SQLTABLE
>> >
>> > Richard
>> >
>> > On Tue, Oct 19, 2010 at 10:52 PM, DenesL <[email protected]> wrote:
>> > > Hello Richard,
>> >
>> > > if I understood correctly, you want:
>> >
>> > > ...
>> > > BlackList = [ 'fieldx', 'fieldy', ...]
>> > > rows = db().select(*[f for f in db['table1'].fields if f not in
>> > > BlackList])
>> > > ...
>> >
>> > > Denes
>> >
>> > > On Oct 19, 6:14 pm, Richard Vézina <[email protected]>
>> > > wrote:
>> > > > Hello,
>> >
>> > > > I would do this :
>> >
>> > > > def grid():
>> > > >     if request.args[0] in tableSubSet:
>> > > >         allFieldsSet=set(db['table1'].fields) # all the fields in
>> the
>> > > table
>> > > >         fieldsBlackListSet=set(['f1ToRem','f2ToRem','f1ToRem']) #
>> fields
>> > > to
>> > > > be remove from the grid
>> > > >         allFieldsSet-=fieldsBlackListSet # removing fields to be
>> removed
>> > > >         fieldsRequested=[]
>> > > >         for field in allFieldsSet:
>> > > >             fieldsRequestedList.append('db.test_activity.'+field) #
>> > > building
>> > > > the select list of elements
>> >
>> > > >         a=','.join(fieldsRequestedList) # transform the list into a
>> > > string
>> >
>> > > >         rows = db().select(a) # BLOCKED BECAUSE OF THE QUOTES
>> > > > (*'*db.table1.field1,
>> > > > db.table1.field2, etc.*'*)!!!
>> > > >         table=SQLTABLE(rows)
>> > > >         return dict(table=table)
>> >
>> > > > Thanks for your help.
>> >
>> > > > Richard
>> >
>> >
>>
>
>

Reply via email to