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:
127.0.0.1.2012-11-14.14-09-15.d938f195-3cd2-4ea2-9044-40a2e8d4226f
| web2py™ | (2, 1, 1, datetime.datetime(2012, 10, 15, 12, 44, 40), 'stable') |
|---|---|
| Python | Python 2.7.2: C:\Python27\python.exe |
1. | Traceback (most recent call last): |
<class 'sqlite3.OperationalError'>(near "interval_time": syntax error)
File D:\web2py2.1.1\web2py\applications\TestApplication\controllers\default.py in status at line 84 code arguments variables
79. | max_created_on = tbl.updated_on.max() |
File D:\web2py2.1.1\web2py\gluon\dal.py in log_execute at line 1687 code arguments variables
(self=<gluon.dal.SQLiteAdapter object>, *a=('SELECT status.serial_no, status.name, status.in...dated_on) GROUP BY status.serial_no, status.name;',), **b={})
1682. | command = a[0] |
| 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
Hi,
I am getting error<class 'sqlite3.OperationalError'> near "interval_time": syntax error
--
query = Expression(db,"interval_time < (strftime('%M','now') - strftime('%M', updated_on))")Compute the number of seconds between two dates:
SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');