PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann ich nach einer benutzerdefinierten Funktion in SQLAlchemy bestellen

Sie könnten Ihre Suche mit einem CASE Ausdruck 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)

Dabei wird der Code Wert Kurzform des case() Konstrukt, um einen Ausdruck zu erzeugen, der den angegebenen Spaltenausdruck mit den im Wörterbuch übergebenen Schlüsseln vergleicht und die zugeordneten Werte als Ergebnis liefert.