Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Urutan SQLAlchemy berdasarkan hasil fungsi

Atribut hibrida adalah metode khusus yang bertindak sebagai properti Python dan ekspresi SQL. Selama difficulty Anda fungsi dapat diekspresikan dalam SQL, dapat digunakan untuk memfilter dan mengurutkan seperti kolom biasa.

Misalnya, jika Anda menghitung kesulitan sebagai jumlah burung beo yang dimiliki suatu masalah, kali sepuluh jika masalahnya lebih lama dari 30 hari, Anda akan menggunakan:

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
        )

dan tanyakan dengan:

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. SQL Server setara dengan tipe data enum MySQL?

  2. Ukuran bidang VARBINARY di SQL Server 2005

  3. Bagaimana cara memasukkan jumlah total baris yang dikembalikan dalam hasil dari perintah SELECT T-SQL?

  4. Statistik Objek Database SQL Server

  5. Tutorial SQL Server – Semua yang Anda Butuhkan Untuk Menguasai Transact-SQL