PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come posso ordinare tramite una funzione personalizzata in SQLAlchemy

Potresti implementare la tua ricerca con un CASE espressione in 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)

Questo utilizza value abbreviazione di case() costrutto per produrre un'espressione che confronta l'espressione di colonna data con le chiavi passate nel dizionario, producendo i valori mappati come risultato.