Sie verwenden das falsche Aggregat
. count(expression)
zählt die Anzahl der Zeilen, für die der Ausdruck ist nicht null. Wenn Sie eine Summe wünschen, verwenden Sie sum(expression)
:
db.session.query(func.sum(Item.data['cost'].astext.cast(Numeric))).\
filter(Item.data['surcharge'].astext.cast(Numeric) > 1).\
scalar()
Beachten Sie, dass Geldwerte und binäre Fließkomma-Mathematik aufgrund von eine schlechte Mischung sind binäre Gleitkommazahlen, die nicht alle Dezimalwerte darstellen können
. Verwenden Sie stattdessen einen geeigneten Währungstyp
, oder Numeric
in diesem Fall verwendet SQLAlchemy Decimal
um die Ergebnisse in Python darzustellen.