Reputation: 1007
I want to get the difference between the current date_time
and the date_time
of each query record. I've tried:
matches = session.query((datetime.now() - Match.date_time_inferred).label("time_diff"))
But I get:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\Philip\Miniconda3\envs\capra\lib\site-packages\sqlalchemy\orm\query.py", line 3149, in __getitem__
def __getitem__(self, item):
File "C:\Users\Philip\Miniconda3\envs\capra\lib\site-packages\sqlalchemy\orm\query.py", line 3149, in __getitem__
def __getitem__(self, item):
File "C:\Users\Philip\Miniconda3\envs\capra\lib\site-packages\sqlalchemy\orm\loading.py", line 35, in instances
def instances(query, cursor, context):
File "C:\Users\Philip\Miniconda3\envs\capra\lib\site-packages\sqlalchemy\util\langhelpers.py", line 62, in __exit__
def __exit__(self, type_, value, traceback):
File "C:\Users\Philip\Miniconda3\envs\capra\lib\site-packages\sqlalchemy\util\compat.py", line 148, in raise_
def raise_(
File "C:\Users\Philip\Miniconda3\envs\capra\lib\site-packages\sqlalchemy\orm\loading.py", line 35, in instances
def instances(query, cursor, context):
File "C:\Users\Philip\Miniconda3\envs\capra\lib\site-packages\sqlalchemy\orm\loading.py", line 84, in <listcomp>
keyed_tuple([proc(row) for proc in process])
File "C:\Users\Philip\Miniconda3\envs\capra\lib\site-packages\sqlalchemy\orm\loading.py", line 84, in <listcomp>
keyed_tuple([proc(row) for proc in process])
File "C:\Users\Philip\Miniconda3\envs\capra\lib\site-packages\sqlalchemy\sql\sqltypes.py", line 1952, in process
def process(value):
TypeError: unsupported operand type(s) for -: 'float' and 'datetime.datetime'
Where is the float coming from? Table1.date_time
is definitely a date_time
field...
Upvotes: 0
Views: 40
Reputation: 13129
You can also use SQL functions for that. For example, for PostgreSQL, it would be
matches = session.query((func.now() - Match.date_time_inferred).label("time_diff"))
Then it only gets processed when it's at the database level, but you shouldn't get problems with values being the wrong type.
Upvotes: 1