Hello.
Can't get this to work, I want to get users who is online - users where last_read column <= now() - 30 minutes
File "/home/eps/devel/tourclub/pbb/pbb/models/__init__.py", line 147, in <module>
class User(UserMixin, Base):
File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/ext/declarative.py", line 1273, in __init__
_as_declarative(cls, classname, cls.__dict__)
File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/ext/declarative.py", line 1078, in _as_declarative
column_copies[obj] = getattr(cls, name)
File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/ext/declarative.py", line 1480, in __get__
return desc.fget(cls)
File "/home/eps/devel/tourclub/pbb/pbb/models/__init__.py", line 143, in is_online
return column_property(case([(cls.last_read is not None, cls.last_read <= func.now() - datetime.timedelta(minutes=30))], else_=False))
File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/sql/expression.py", line 607, in case
return _Case(whens, value=value, else_=else_)
File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/sql/expression.py", line 3016, in __init__
_literal_as_binds(r)) for (c, r) in whens
File "/home/eps/devel/tourclub/sqlalchemy/lib/sqlalchemy/sql/expression.py", line 1410, in _no_literals
"bound value." % element)
sqlalchemy.exc.ArgumentError: Ambiguous literal: True. Use the 'text()' function to indicate a SQL expression literal, or 'literal()' to indicate a bound value.
I want to get something like this but in SA...
SELECT * FROM "user" u WHERE (CASE WHEN u.last_read IS NULL THEN False ELSE u.last_read <= now() - 30 * INTERVAL '1 minute' END) IS True;
...