will look into this. On Apr 9, 2:14 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > I do give it a name. > In this case the name is 'current_R'. > > I just typed the line of code that caused the error to help you narrow > it down, I am sorry I did not copy/paste instead of quickly typing it. > The code is correct, I don't edit anything when I test it on dal.py > > By the way, the trackback says "sql.py" but it is really a softlink to dal.py. > > -Thadeus > > On Fri, Apr 9, 2010 at 2:04 PM, mdipierro <mdipie...@cs.depaul.edu> wrote: > > This > > >>db.table.field.sum().with_alias() > > > is invalid syntax. You need to give it a name > > > db.table.field.sum().with_alias('thesum') > > > On Apr 9, 1:43 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > >> db.table.field.sum().with_alias() > > >> Traceback (most recent call last): > >> File "/home/tburgess/Applications/web2py/gluon/restricted.py", line > >> 173, in restricted > >> exec ccode in environment > >> File > >> "/home/tburgess/Applications/web2py/applications/pms/controllers/default.py", > >> line 305, in <module> > >> File "/home/tburgess/Applications/web2py/gluon/globals.py", line 96, > >> in <lambda> > >> self._caller = lambda f: f() > >> File "/home/tburgess/Applications/web2py/applications/pms/models/db.py", > >> line 277, in current_R > >> return db(db.R.id == > >> RID).select(db.R.sum().with_alias('current_R')).first().current_R > >> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 3276, in > >> select > >> return self._db._adapter.select(self._query,*fields,**attributes) > >> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 514, in > >> select > >> rows = response(query) > >> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 505, in > >> response > >> self.execute(query) > >> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 589, in > >> execute > >> return self.log_execute(*a, **b) > >> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 583, in > >> log_execute > >> ret = self.cursor.execute(*a,**b) > >> OperationalError: near "AS": syntax error > > >> -Thadeus > > >> On Thu, Apr 8, 2010 at 2:57 PM, Thadeus Burgess <thade...@thadeusb.com> > >> wrote: > >> > Massimo, I am attaching a application that can replicate this issue. > > >> > Works fine on sql.py > > >> > Breaks on dal.py > > >> > This application is designed after my big application, the represent > >> > functions HAVE to stay the same, there cannot be ANY code edits to > >> > them! > > >> > Make sure to run with sql.py first to confirm that it IS working > >> > correctly. THEN copy dal.py to sql.py, restart web2py, and then > >> > confirm that it no longer works. > > >> > -Thadeus > > >> > On Thu, Apr 8, 2010 at 10:12 AM, Thadeus Burgess <thade...@thadeusb.com> > >> > wrote: > >> >> Agreed. Lets narrow this down, I will see if I can replicate the issue > >> >> on a smaller scale. > > >> >> -Thadeus > > >> >> On Wed, Apr 7, 2010 at 11:08 PM, Massimo Di Pierro > >> >> <mdipie...@cs.depaul.edu> wrote: > >> >>> I guess my question is " why does it not throw an exception in > >> >>> sql.py?" It > >> >>> should since > > >> >>>>> db.dog.owner.represent = lambda value: "%s" % db.person[value].name > > >> >>> when called with value==None should always result in the error you see > >> >>> in > >> >>> dal.py. > > >> >>> Can you help me debug this? My problem is not why it does not work with > >> >>> dal.py (that is the part I understand). My problem is how is it that it > >> >>> works with sql.py? > > >> >>> On Apr 7, 2010, at 10:58 PM, Thadeus Burgess wrote: > > >> >>>> I am not using different datasets, or using different queries. > > >> >>>> So here we go, let me explain in every minuet detail this process. > > >> >>>>>>> cd ~ > >> >>>>>>> hg clonehttps://web2py.googlecode.com/hgweb2py > >> >>>>>>> cd web2py > >> >>>>>>> ln -s ~/path/to/my/application applications/pms > >> >>>>>>> python web2py.py -a <recycle> > > >> >>>> *go to 127.0.0.1:8000/pms/default/index > >> >>>> *everything works perfectly, I see the page as it should be with > >> >>>> records in place, providing the proper "names" (this is only three > >> >>>> records, I KNOW they have values) > > >> >>>>>>> kill -SIGTERM <web2py process id> > >> >>>>>>> cd gluon/ > >> >>>>>>> mv sql.py sql.bak.py > >> >>>>>>> ln -s dal.py sql.py > >> >>>>>>> cd .. > >> >>>>>>> python web2py.py -a <recycle> > > >> >>>> *go to 127.0.0.1:8000/pms/default/index > >> >>>> *receive stacktrace. > > >> >>>>>>> kill -SIGTERM <web2py process id> > >> >>>>>>> cd gluon/ > >> >>>>>>> rm sql.py > >> >>>>>>> mv sql.bak.py sql.py > >> >>>>>>> cd .. > >> >>>>>>> python web2py.py -a <recycle> > > >> >>>> *go to 127.0.0.1:8000/pms/default/index > >> >>>> *behold, everything works perfectly. > > >> >>>> Even IF, and I say IF my dataset has a bad reference to a None record, > >> >>>> and it executes just fine with sql.py, it should execute with dal.py > >> >>>> exactly the same, it should not be throwing the exception. > > >> >>>> -Thadeus > > >> >>>> On Wed, Apr 7, 2010 at 10:10 PM, Massimo Di Pierro > >> >>>> <mdipie...@cs.depaul.edu> wrote: > > >> >>>>> I assume it is > > >> >>>>>> db.dog.owner.represent = lambda value: "%s" % db.person[value].name > > >> >>>>> The stacktrace you get is because one of your records has owner==None > >> >>>>> hence > >> >>>>> db.person[value] is also None and None has no .name. It is not a > >> >>>>> bug. You > >> >>>>> are doing different queries or using different datasets. > > >> >>>>> Anyway if you do > > >> >>>>>> db.define_table('person', Field('name'), format='%(name)s') > >> >>>>>> db.define_table('dog', Field('nickname'), Field('owner', db.person)) > > >> >>>>> the requires is set automatically and should take care of this > >> >>>>> exception. > > >> >>>>> On Apr 7, 2010, at 10:01 PM, Thadeus Burgess wrote: > > >> >>>>>> I am defining this function. > > >> >>>>>> db.define_table('person', Field('name')) > >> >>>>>> db.define_table('dog', Field('nickname'), Field('owner', db.person)) > > >> >>>>>> db.dog.owner.represent = lambda value: "%s" % db.owner[value].name > > >> >>>>>> This works in sql.py > > >> >>>>>> This does not work in dal.py > > >> >>>>>> You said you made changes, I tested, works just fine on sql.py, and > >> >>>>>> has been for quite a while, however I get that stacktrace when I use > >> >>>>>> dal.py. > > >> >>>>>> -Thadeus > > >> >>>>>> On Wed, Apr 7, 2010 at 8:34 PM, mdipierro <mdipie...@cs.depaul.edu> > >> >>>>>> wrote: > > >> >>>>>>> I guess I do not understand. Who defined this represent function? > >> >>>>>>> is > >> >>>>>>> it not in your code? Are you saying this is a bug in sql.py? > > >> >>>>>>> On Apr 7, 7:48 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > > >> >>>>>>>> No. > > >> >>>>>>>> For dal.py to be accepted it has to work exactly like sql.py > > >> >>>>>>>> Therefore I cannot make ANY code changes if we want a new DAL. > > >> >>>>>>>> -Thadeus > > >> >>>>>>>> On Wed, Apr 7, 2010 at 5:31 PM, mdipierro > >> >>>>>>>> <mdipie...@cs.depaul.edu> > >> >>>>>>>> wrote: > > >> >>>>>>>>> This > > >> >>>>>>>>> db.TableA.id_TableB.represent = lambda value: "%s" % > >> >>>>>>>>> db.TableB[value].name > > >> >>>>>>>>> should be > > >> >>>>>>>>> db.TableA.id_TableB.represent = lambda value: (db.TableB[value] > >> >>>>>>>>> or > >> >>>>>>>>> {}).get('name','anonymous') > > >> >>>>>>>>> On Apr 7, 1:36 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > > >> >>>>>>>>>> Traceback (most recent call last): > >> >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/restricted.py", > >> >>>>>>>>>> line > >> >>>>>>>>>> 173, in restricted > >> >>>>>>>>>> exec ccode in environment > >> >>>>>>>>>> File > > >> >>>>>>>>>> "/home/tburgess/Applications/web2py/applications/pms/views/default/index.html", > >> >>>>>>>>>> line 62, in <module> > >> >>>>>>>>>> <thead> > >> >>>>>>>>>> File > > >> >>>>>>>>>> "/home/tburgess/Applications/web2py/applications/pms/models/common.py", > >> >>>>>>>>>> line 197, in <lambda> > >> >>>>>>>>>> db.TableA.id_TableB.represent = lambda value: "%s" % > >> >>>>>>>>>> db.TableB[value].name > >> >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line > >> >>>>>>>>>> 2402, > >> >>>>>>>>>> in __getitem__ > >> >>>>>>>>>> return self._db(self.id == key).select().first() > >> >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line > >> >>>>>>>>>> 3276, > >> >>>>>>>>>> in > >> >>>>>>>>>> select > >> >>>>>>>>>> return > >> >>>>>>>>>> self._db._adapter.select(self._query,*fields,**attributes) > >> >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line > >> >>>>>>>>>> 507, in > >> >>>>>>>>>> select > >> >>>>>>>>>> query = self.SELECT(query,*fields, **attributes) > >> >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line > >> >>>>>>>>>> 433, in > >> >>>>>>>>>> SELECT > >> >>>>>>>>>> for field in self.db[table]: > >> >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line > >> >>>>>>>>>> 2102, > >> >>>>>>>>>> in __getitem__ > >> >>>>>>>>>> return dict.__getitem__(self, str(key)) > >> >>>>>>>>>> KeyError: 'None' > > >> >>>>>>>>>> -Thadeus > > >> >>>>>>>>>> On Mon, Apr 5, 2010 at 6:00 PM, mdipierro > >> >>>>>>>>>> <mdipie...@cs.depaul.edu> > >> >>>>>>>>>> wrote: > > >> >>>>>>>>>>> uploading fix. please check it. Thanks for testing this. > > >> >>>>>>>>>>> On Apr 5, 3:59 pm, Thadeus Burgess <thade...@thadeusb.com> > >> >>>>>>>>>>> wrote: > > >> >>>>>>>>>>>> Traceback (most recent call last): > >> >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/restricted.py", > >> >>>>>>>>>>>> line > >> >>>>>>>>>>>> 173, in restricted > >> >>>>>>>>>>>> exec ccode in environment > >> >>>>>>>>>>>> File > > >> >>>>>>>>>>>> "/home/tburgess/Applications/web2py/applications/pms/controllers/default.py", > >> >>>>>>>>>>>> line 278, in <module> > >> >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/globals.py", > >> >>>>>>>>>>>> line > >> >>>>>>>>>>>> 96, > >> >>>>>>>>>>>> in <lambda> > >> >>>>>>>>>>>> self._caller = lambda f: f() > >> >>>>>>>>>>>> File > > >> >>>>>>>>>>>> "/home/tburgess/Applications/web2py/applications/pms/controllers/default.py", > >> >>>>>>>>>>>> line 76, in duplicates > >> >>>>>>>>>>>> orderby=db.potentials.A > >> >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line > >> >>>>>>>>>>>> 3258, > >> >>>>>>>>>>>> in select > >> >>>>>>>>>>>> return > >> >>>>>>>>>>>> self._db._adapter.select(self._query,*fields,**attributes) > >> >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line > >> >>>>>>>>>>>> 512, > >> >>>>>>>>>>>> in select > > ... > > read more »
-- To unsubscribe, reply using "remove me" as the subject.