Hi,
I am getting error 
*<class 'sqlite3.OperationalError'> near "interval_time": syntax error*


Please see the code and traceback below:

*In db.py:*

db.define_table(
                'status',
                Field('serial_no',requires=IS_NOT_EMPTY()),
                Field('name',requires=IS_NOT_EMPTY()),                     
       
                Field('updated_on','datetime',default=request.now),
                Field('interval_time','integer',default=0))
       
def save_status():
    result = {}    
    result['serial_no'] = '123456'
    result['name'] = 'MyDevice'
    result['updated_on'] = request.now
    result['interval_time'] = 1 
    db.status.insert(**result)
    db.commit()

*In default.py:*

from gluon.dal import Expression

def status():
    tbl = db.status
    max_created_on = tbl.updated_on.max()
    query = Expression(db,"date_sub(now(),interval interval_time minute) > 
updated_on")
    
    rows=db(query).select(tbl.serial_no,tbl.name,\
                          tbl.interval_time,max_created_on,\
                          groupby=tbl.serial_no|tbl.name)

    # additional logic has to be added here when we get rows object 
successfully from db....

    grid = SQLFORM.grid(db.status)
    return locals()
 
 
def save_device_status():
    save_status()   



*TRACEBACK:*


Ticket ID 

127.0.0.1.2012-11-14.14-09-15.d938f195-3cd2-4ea2-9044-40a2e8d4226f
<class 'sqlite3.OperationalError'> near "interval_time": syntax error 
Version  web2py™ (2, 1, 1, datetime.datetime(2012, 10, 15, 12, 44, 40), 
'stable')  Python Python 2.7.2: C:\Python27\python.exe  Traceback 

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.

Traceback (most recent call last):
  File "D:\web2py2.1.1\web2py\gluon\restricted.py", line 209, in restricted
    exec ccode in environment
  File 
"D:/web2py2.1.1/web2py/applications/TestApplication/controllers/default.py" 
<http://127.0.0.1:8000/admin/default/edit/TestApplication/controllers/default.py>,
 line 91, in <module>
  File "D:\web2py2.1.1\web2py\gluon\globals.py", line 187, in <lambda>
    self._caller = lambda f: f()
  File 
"D:/web2py2.1.1/web2py/applications/TestApplication/controllers/default.py" 
<http://127.0.0.1:8000/admin/default/edit/TestApplication/controllers/default.py>,
 line 84, in status
    groupby=tbl.serial_no|tbl.name)
  File "D:\web2py2.1.1\web2py\gluon\dal.py", line 8787, in select
    return adapter.select(self.query,fields,attributes)
  File "D:\web2py2.1.1\web2py\gluon\dal.py", line 2127, in select
    return super(SQLiteAdapter, self).select(query, fields, attributes)
  File "D:\web2py2.1.1\web2py\gluon\dal.py", line 1615, in select
    return self._select_aux(sql,fields,attributes)
  File "D:\web2py2.1.1\web2py\gluon\dal.py", line 1580, in _select_aux
    self.execute(sql)
  File "D:\web2py2.1.1\web2py\gluon\dal.py", line 1693, in execute
    return self.log_execute(*a, **b)
  File "D:\web2py2.1.1\web2py\gluon\dal.py", line 1687, in log_execute
    ret = self.cursor.execute(*a, **b)
OperationalError: near "interval_time": syntax error

 Error snapshot [image: help]  

<class 'sqlite3.OperationalError'>(near "interval_time": syntax error) 

inspect attributes 
 Frames 
   
   -  
   
   *File D:\web2py2.1.1\web2py\gluon\restricted.py in restricted at line 209
   * code arguments variables 
    -  
   
   *File 
   D:\web2py2.1.1\web2py\applications\TestApplication\controllers\default.py 
   in <module> at line 91* code arguments variables 
    -  
   
   *File D:\web2py2.1.1\web2py\gluon\globals.py in <lambda> at line 187* 
   code arguments variables 
    -  
   
   *File 
   D:\web2py2.1.1\web2py\applications\TestApplication\controllers\default.py 
   in status at line 84* code arguments variables 
    Code listing 
   
   79.
   80.
   81.
   82.
   83.
   84.
   
   85.
   86.
   87.
   88.
   
       max_created_on = tbl.updated_on.max()
       query = Expression(db,"date_sub(now(),interval interval_time minute) > 
updated_on")
   
       rows=db(query).select(tbl.serial_no,tbl.name,\
                             tbl.interval_time,max_created_on,\
                             groupby=tbl.serial_no|tbl.name)
   
       grid = SQLFORM.grid(db.status)
       return locals()
   
    -  
   
   *File D:\web2py2.1.1\web2py\gluon\dal.py in select at line 8787* code 
   arguments variables 
    -  
   
   *File D:\web2py2.1.1\web2py\gluon\dal.py in select at line 2127* code 
   arguments variables 
    -  
   
   *File D:\web2py2.1.1\web2py\gluon\dal.py in select at line 1615* code 
   arguments variables 
    -  
   
   *File D:\web2py2.1.1\web2py\gluon\dal.py in _select_aux at line 1580* 
   code arguments variables 
    -  
   
   *File D:\web2py2.1.1\web2py\gluon\dal.py in execute at line 1693* code 
   arguments variables 
    -  
   
   *File D:\web2py2.1.1\web2py\gluon\dal.py in log_execute at line 1687* 
   code arguments variables 
    Function argument list 
   
   (self=<gluon.dal.SQLiteAdapter object>, *a=('SELECT status.serial_no, 
   status.name, status.in...dated_on) GROUP BY status.serial_no, 
   status.name;',), **b={})
    Code listing 
   
   1682.
   1683.
   1684.
   1685.
   1686.
   1687.
   
   1688.
   1689.
   1690.
   1691.
   
           command = a[0]
           if self.db._debug:
               LOGGER.debug('SQL: %s' % command)
           self.db._lastsql = command
           t0 = time.time()
           ret = self.cursor.execute(*a, **b)
   
           self.db._timings.append((command,time.time()-t0))
           del self.db._timings[:-TIMINGSSIZE]
           return ret
   
    Variables  a ('SELECT status.serial_no, status.name, 
   status.in...dated_on) GROUP BY status.serial_no, status.name;',)  b {}  
   self <gluon.dal.SQLiteAdapter object>  ret undefined  self.cursor 
<sqlite3.Cursor 
   object>  self.cursor.execute <built-in method execute of sqlite3.Cursor 
   object>
   

*I am suspecting something is wrong with Expression syntax but unable to 
catch it , please help me resolve this issue.*

Thanks,

Amit

*
*


-- 



Reply via email to