Hi Manuele, I don't need to build the entire query, just the filters for the itemgroup column. Let me try and explain this a bit differently. I have a list of 10 items a user can select from. If the user selects 4 items, I need to have four 'OR' statements (itemgroup=='a' or itemgroup=='b' or itemgroup=='c' or itemgroup=='d')
It would be even better if I could just say itemgroup isin ['a','b','c','d'] but I know that probably isn't available. Thanks Simon On Friday, 24 May 2013 12:31:50 UTC+1, Manuele wrote: > > Il 24/05/13 13:21, Simon Carr ha scritto: > > By the way I am using Gluon in a standalone Python script, so if the code > does not look quite that might be the reason. > > I currently have some values hard coded in my SQL but I now want users to > have a choice. Here is the current code. > > RS_Data = db( > (db.weekly_data.week == weekno)& > ((db.weekly_data.itemgroup == 'BOTDTO')| > (db.weekly_data.itemgroup == 'C&FOTO')| > (db.weekly_data.itemgroup == 'PROPTO')| > (db.weekly_data.itemgroup == 'STRSTO'))& > (db.weekly_data.days <= bin_group['high'])& > (db.weekly_data.days >= bin_group['low']) > ).select(db.weekly_data.item, > orderby=db.weekly_data.item, > groupby=db.weekly_data.item > ) > > Below is what I am trying to do but getting an error. As you can see I am > trying to build up my selection criteria based on the values a users has > selected from a list. It would be great I could just pass in a Python List. > If I cant just pass in a list what would you suggest is the best way to > solve this problem? > > If I correctly understood you need a way to build a queryparametrically... > I would try something like this: > > def build_my_query(v): > q = (db.weekly_data.itemgroup == v) > return (db.weekly_data.week == weekno)&q&(db.weekly_data.days <= > bin_group['high'])&(db.weekly_data.days >= bin_group['low']) > > personally I don't like code that write code... > > I hope it could be of any help > > bye > > M. > > > buildCommod = "(" > for commodity in commodityList: > buildCommod += "(db.weekly_data.itemgroup == '" + > commodity + "')|" > buildCommod = buildCommod[:-1] + ")" > > RS_Data = db( > (db.weekly_data.week == weekno)& buildCommod & > (db.weekly_data.days <= bin_group['high'])& > (db.weekly_data.days >= bin_group['low']) > ).select(db.weekly_data.item, > orderby=db.weekly_data.item, > groupby=db.weekly_data.item > ) > > > The error I am getting is > > File "D:\Data\BAAN\summary.py", line 1052, in AOL_AllUpAllUpToExcel > groupby=db.weekly_data.item > File "D:\Python27_5\gluon\dal.py", line 9860, in select > return adapter.select(self.query,fields,attributes) > File "D:\Python27_5\gluon\dal.py", line 1690, in select > return self._select_aux(sql,fields,attributes) > File "D:\Python27_5\gluon\dal.py", line 1655, in _select_aux > self.execute(sql) > File "D:\Python27_5\gluon\dal.py", line 1768, in execute > return self.log_execute(*a, **b) > File "D:\Python27_5\gluon\dal.py", line 1762, in log_execute > ret = self.cursor.execute(*a, **b) > File "D:\Python27_5\gluon\contrib\pg8000\dbapi.py", line 246, in _fn > return fn(self, *args, **kwargs) > File "D:\Python27_5\gluon\contrib\pg8000\dbapi.py", line 317, in execute > self._execute(operation, args) > File "D:\Python27_5\gluon\contrib\pg8000\dbapi.py", line 322, in _execute > self.cursor.execute(new_query, *new_args) > File "D:\Python27_5\gluon\contrib\pg8000\interface.py", line 398, in > execute > self._stmt = PreparedStatement(self.connection, query, > statement_name="", *[{"type": type(x), "value": x} for x in args]) > File "D:\Python27_5\gluon\contrib\pg8000\interface.py", line 138, in > __init__ > self._parse_row_desc = self.c.parse(self._statement_name, statement, > types) > File "D:\Python27_5\gluon\contrib\pg8000\protocol.py", line 943, in _fn > return fn(self, *args, **kwargs) > File "D:\Python27_5\gluon\contrib\pg8000\protocol.py", line 1104, in > parse > return reader.handle_messages() > File "D:\Python27_5\gluon\contrib\pg8000\protocol.py", line 929, in > handle_messages > raise exc > gluon.contrib.pg8000.errors.ProgrammingError: ('ERROR', '3F000', 'schema > "db" does not exist') > > > > -- > > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to web2py+un...@googlegroups.com <javascript:>. > For more options, visit https://groups.google.com/groups/opt_out. > > > > > -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.