Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Kolejność SQLAlchemy według wyniku funkcji

Atrybuty hybrydowe to specjalne metody, które działają zarówno jako właściwość Pythona, jak i wyrażenie SQL. Tak długo, jak Twój difficulty funkcja może być wyrażona w SQL, może być używana do filtrowania i porządkowania jak normalna kolumna.

Na przykład, jeśli obliczysz trudność jako liczbę papug, które ma problem, razy dziesięć, jeśli problem jest starszy niż 30 dni, użyjesz:

from datetime import datetime, timedelta
from sqlalchemy import Column, Integer, DateTime, case
from sqlalchemy.ext.hybrid import hybrid_property

class Problem(Base):
    parrots = Column(Integer, nullable=False, default=1)
    created = Column(DateTime, nullable=False, default=datetime.utcnow)

    @hybrid_property
    def difficulty(self):
        # this getter is used when accessing the property of an instance
        if self.created <= (datetime.utcnow() - timedelta(30)):
            return self.parrots * 10

        return self.parrots

    @difficulty.expression
    def difficulty(cls):
        # this expression is used when querying the model
        return case(
            [(cls.created <= (datetime.utcnow() - timedelta(30)), cls.parrots * 10)],
            else_=cls.parrots
        )

i wyślij zapytanie za pomocą:

session.query(Problem).order_by(Problem.difficulty.desc())



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak skonfigurować maksymalne wykorzystanie pamięci SQL Server

  2. Jak przekazać parametry z wartościami przechowywanymi w tabeli z java do procedury składowanej serwera sql?

  3. Czy mogę włączyć ignorowanie_dup_key dla klucza podstawowego?

  4. Jak zignorować tagi html w Sql Server 2008 Full Text Search

  5. Czy szybciej jest UAKTUALNIĆ wiersz, czy USUNĄĆ go i WSTAWIĆ nowy?