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
>> >>>>>>>>>>>>  return self.parse(rows,self._colnames)
>> >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 
>> >>>>>>>>>>>> 706,
>> >>>>>>>>>>>> in parse
>> >>>>>>>>>>>>  (rid._table, rid._record) = (db[referee], None)
>> >>>>>>>>>>>> NameError: global name 'db' is not defined
>>
>> >>>>>>>>>>>> -Thadeus
>>
>> >>>>>>>>>>>> On Mon, Apr 5, 2010 at 3:01 PM, mdipierro
>> >>>>>>>>>>>> <mdipie...@cs.depaul.edu>
>> >>>>>>>>>>>> wrote:
>>
>> >>>>>>>>>>>>> try now
>>
>> >>>>>>>>>>>>> On Apr 5, 2:30 pm, Thadeus Burgess <thade...@thadeusb.com> 
>> >>>>>>>>>>>>> wrote:
>>
>> >>>>>>>>>>>>>> Now I get this for reference field
>>
>> >>>>>>>>>>>>>> Traceback (most recent call last):
>> >>>>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/restricted.py",
>> >>>>>>>>>>>>>> line
>> >>>>>>>>>>>>>> 173, in restricted
>> >>>>>>>>>>>>>>  exec ccode in environment
>> >>>>>>>>>>>>>> File
>>
>> ...
>>
>> read more »
>
>
> --
> To unsubscribe, reply using "remove me" as the subject.
>

Reply via email to