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