SqlAlchemy (Postgres + Flask): как суммировать несколько столбцов?

У меня есть класс Score со столбцом item_id и несколькими полями, имеющими разные типы оценок (score1, score2, score3...), все из которых имеют целочисленные значения.

Мне нужно написать запрос, который берет список типов оценок и возвращает список с объектами, имеющими itemid и сумму оценок всех типов оценок, упомянутых в списке рядом. Я пытаюсь сделать это с помощью гибридного метода, но не понимаю, как написать запрос.

model.py

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):
        ts = 0
        for field in fields : 
            ts = ts + self[field]
        return ts

controller.py

app.route('/scores', methods=['POST'])
def scores():
    fields = ['score1', 'score2']
    scores = Score.query.all().order_by('total_score')

Очевидно, что это не работает. Не могли бы вы помочь мне написать запрос, большое спасибо!

Вот как мне нужно получить окончательный результат:

[{'item_id' : 'x1', 'total_score' : y1},{'item_id' : 'x2', 'total_score' : y2},{'item_id' : 'x3', 'total_score' : y3}, ...]

person vivekanon    schedule 28.02.2016    source источник


Ответы (1)