PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

SqlAlchemy (Postgres + Flask):Làm thế nào để tính tổng nhiều cột?

Bạn cần tạo biểu thức cho hybrid_method

class Score(db.Model):
    __tablename__ = 'scores'
    item_id  = db.Column(db.Integer(), primary_key=True)
    score1 = db.Column(db.Integer(), nullable=False)
    score2 = db.Column(db.Integer(), nullable=False)
    score3 = db.Column(db.Integer(), nullable=False)
    score4 = db.Column(db.Integer(), nullable=False)

    @hybrid_method
    def total_score(self, fields):
        return sum(getattr(self, field) for field in fields)

    @total_score.expression
    def total_score(cls, fields):
        return sum(getattr(cls, field) for field in fields)


fields = ['score1', 'score2']
scores = db.session.query(Score.item_id, Score.total_score(fields).label('total_score')).order_by('total_score')
final_output = [score._asdict() for score in scores]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mối quan hệ giữa Django Postgres ArrayField vs One-to-Many

  2. Postgres Materialized Path - Lợi ích của việc sử dụng ltree là gì?

  3. Cách đạt được hiệu suất cao trong một giao dịch lớn (postgresql)

  4. Làm thế nào để tìm hiểu xem một trình tự đã được khởi tạo trong phiên này hay chưa?

  5. Cách xử lý các diễn biến cơ sở dữ liệu Play Framework 2 trong quá trình sản xuất