是的,您需要使用一种称为混合属性的功能。需要使用Python逻辑和SQL表达式逻辑来表示该表达式:
from sqlalchemy.ext.hybrid import hybrid_propertyfrom sqlalchemy import caseclass PlayerModel(base): __tablename__ = 'players' alliances_id = Column(Integer, ForeignKey('alliances.id'), nullable=True) alliance = relationship('AllianceModel') username = Column(String(30), nullable=False) wins = Column(Integer, default=0, nullable=False) defeats = Column(Integer, default=0, nullable=False) @hybrid_property def score(self): number = self.wins + self.defeats if number: return self.wins / number return 0 @score.expression def score(cls): number = cls.wins + cls.defeats return case([(number > 0, cls.wins / number)], else_ = 0)


