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

