[sqlalchemy] Re: I tried many different ways to get the sum of the differences of two columns in a table with sqlalchemy, but always end up with errors:

2018-06-04 Thread Hongqi Jia
Further information:

If I remove total_seconds() call, using whens={'SUCCESS': self.model.end_time 
- self.model.start_time}, then I'll get the following error:


   - File 
   "/usr/local/lib/python2.7/site-packages/flask_admin/contrib/sqla/view.py", 
   line *1038*, in get_list
   
   query = query.all()
   
   - File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", 
   line *2703*, in all
   
   return list(self)
   
   - File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", 
   line *90*, in instances
   
   util.raise_from_cause(err)
   
   - File "/usr/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", 
   line *203*, in raise_from_cause
   
   reraise(type(exception), exception, tb=exc_tb, cause=cause)
   
   - File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", 
   line *78*, in instances
   
   for row in fetch]
   
   - File 
   "/usr/local/lib/python2.7/site-packages/sqlalchemy/sql/sqltypes.py", 
   line *1717*, in process
   
   return value - epoch
   
   
TypeError: unsupported operand type(s) for -: 'Decimal' and 
'datetime.datetime'


On Monday, June 4, 2018 at 12:00:30 PM UTC-4, Hongqi Jia wrote:
>
> Here is how I define the query:
>
> _query = self.session.query(self.model.type, 
> func.sum(case(value=self.model.final_status, whens={'SUCCESS': 
> (self.model.end_time - self.model.start_time).total_seconds()}, else_=None)
>
>
> Here the end_time and start_time are columns of DateTime type.
>
>
> Here is the error I got.  Desperately need help here, and really appreciate 
> any suggestions! 
>
>
> Error message:
>
>
>
>- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line *1997*, 
> in __call__
>
>return self.wsgi_app(environ, start_response)
>
>- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 
>*1985*, in wsgi_app
>
>response = self.handle_exception(e)
>
>- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 
>*1540*, in handle_exception
>
>reraise(exc_type, exc_value, tb)
>
>- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 
>*1982*, in wsgi_app
>
>response = self.full_dispatch_request()
>
>- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 
>*1614*, in full_dispatch_request
>
>rv = self.handle_user_exception(e)
>
>- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 
>*1517*, in handle_user_exception
>
>reraise(exc_type, exc_value, tb)
>
>- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 
>*1612*, in full_dispatch_request
>
>rv = self.dispatch_request()
>
>- File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 
>*1598*, in dispatch_request
>
>return self.view_functions[rule.endpoint](**req.view_args)
>
>- File "/usr/local/lib/python2.7/site-packages/flask_admin/base.py", 
>line *69*, in inner
>
>return self._run_view(f, *args, **kwargs)
>
>- File "/usr/local/lib/python2.7/site-packages/flask_admin/base.py", 
>line *368*, in _run_view
>
>return fn(self, *args, **kwargs)
>
>- File 
>"/usr/local/lib/python2.7/site-packages/flask_admin/model/base.py", 
>line *1882*, in index_view
>
>view_args.search, view_args.filters, page_size=page_size)
>
>- File 
>"/usr/local/lib/python2.7/site-packages/flask_admin/contrib/sqla/view.py", 
>line *997*, in get_list
>
>query = self.get_query()
>
>- File "/app/src/main/python/hermes_reporter/admin.py", line *344*, in 
>get_query
>
>whens={'SUCCESS': (_model.updated_on - _model.created_on).total_seconds()},
>
>- File 
>"/usr/local/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", 
>line *682*, in __getattr__
>
>key)
>
>
> AttributeError: Neither 'BinaryExpression' object nor 'Comparator' object 
> has an attribute 'total_seconds'
>
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.


[sqlalchemy] I tried many different ways to get the sum of the differences of two columns in a table with sqlalchemy, but always end up with errors:

2018-06-04 Thread Hongqi Jia
Here is how I define the query:

_query = self.session.query(self.model.type, 
func.sum(case(value=self.model.final_status, whens={'SUCCESS': 
(self.model.end_time - self.model.start_time).total_seconds()}, else_=None)


Here the end_time and start_time are columns of DateTime type.


Here is the error I got.  Desperately need help here, and really appreciate any 
suggestions! 


Error message:



   - File "/usr/local/lib/python2.7/site-packages/flask/app.py", line *1997*, 
in __call__
   
   return self.wsgi_app(environ, start_response)
   
   - File "/usr/local/lib/python2.7/site-packages/flask/app.py", line *1985*, 
   in wsgi_app
   
   response = self.handle_exception(e)
   
   - File "/usr/local/lib/python2.7/site-packages/flask/app.py", line *1540*, 
   in handle_exception
   
   reraise(exc_type, exc_value, tb)
   
   - File "/usr/local/lib/python2.7/site-packages/flask/app.py", line *1982*, 
   in wsgi_app
   
   response = self.full_dispatch_request()
   
   - File "/usr/local/lib/python2.7/site-packages/flask/app.py", line *1614*, 
   in full_dispatch_request
   
   rv = self.handle_user_exception(e)
   
   - File "/usr/local/lib/python2.7/site-packages/flask/app.py", line *1517*, 
   in handle_user_exception
   
   reraise(exc_type, exc_value, tb)
   
   - File "/usr/local/lib/python2.7/site-packages/flask/app.py", line *1612*, 
   in full_dispatch_request
   
   rv = self.dispatch_request()
   
   - File "/usr/local/lib/python2.7/site-packages/flask/app.py", line *1598*, 
   in dispatch_request
   
   return self.view_functions[rule.endpoint](**req.view_args)
   
   - File "/usr/local/lib/python2.7/site-packages/flask_admin/base.py", 
   line *69*, in inner
   
   return self._run_view(f, *args, **kwargs)
   
   - File "/usr/local/lib/python2.7/site-packages/flask_admin/base.py", 
   line *368*, in _run_view
   
   return fn(self, *args, **kwargs)
   
   - File "/usr/local/lib/python2.7/site-packages/flask_admin/model/base.py", 
   line *1882*, in index_view
   
   view_args.search, view_args.filters, page_size=page_size)
   
   - File 
   "/usr/local/lib/python2.7/site-packages/flask_admin/contrib/sqla/view.py", 
   line *997*, in get_list
   
   query = self.get_query()
   
   - File "/app/src/main/python/hermes_reporter/admin.py", line *344*, in 
   get_query
   
   whens={'SUCCESS': (_model.updated_on - _model.created_on).total_seconds()},
   
   - File 
   "/usr/local/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", 
   line *682*, in __getattr__
   
   key)
   
   
AttributeError: Neither 'BinaryExpression' object nor 'Comparator' object 
has an attribute 'total_seconds'

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.