sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo puedo ordenar por una función personalizada en SQLAlchemy?

Podría implementar su búsqueda con un CASE expresión en SQL:

from sqlalchemy import case

_event_type_lookup = dict(received=0, open=1, done=2)

class Trades(Base):
    ...
    @hybrid_property
    def event_type_to_integer(self):
        return _event_type_lookup[self.event_type]

    @event_type_to_integer.expression
    def event_type_to_integer(cls):
        return case(_event_type_lookup, value=cls.event_type)

Esto utiliza el value abreviatura de case() construir para producir una expresión que compare la expresión de columna dada con las claves pasadas en el diccionario, dando como resultado los valores asignados.