(新的SQLAlchemy用户警报)我有三个表:一个人,该人从特定日期开始的每小时费率以及每日时间报告。我正在寻找一种正确的方法,以使该天的时基成本不高于该天的人每小时费率。是的,我可以在创建时计算该值并将其作为模型的一部分,但可以将其视为总结幕后更复杂数据的示例。如何计算Time.cost?它是hybrid_propery,column_property还是完全不同的东西?class Person(Base): __tablename__ = 'person' personID = Column(Integer, primary_key=True) name = Column(String(30), unique=True)class Payrate(Base): __tablename__ = 'payrate' payrateID = Column(Integer, primary_key=True) personID = Column(Integer, ForeignKey('person.personID')) hourly = Column(Integer) starting = Column(Date) __tableargs__ =(UniqueConstraint('personID', 'starting', name='uc_peron_starting'))class Time(Base): __tablename__ = 'entry' entryID = Column(Integer, primary_key=True) personID = Column(Integer, ForeignKey('person.personID')) workedon = Column(Date) hours = Column(Integer) person = relationship("Person") def __repr__(self): return "<{date} {hours}hrs ${0.cost:.02f}>".format(self, date=self.workedon.isoformat(), hours=to_hours(self.hours)) @property def cost(self): '''Cost of entry ''' ## This is where I am stuck in propery query creation return self.hours * query(Payrate).filter( and_(Payrate.personID==personID, Payrate.starting<=workedon ).order_by( Payrate.starting.desc())
2 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
很多时候,我能给出的最好建议就是做些不同的事情。这样的多表计算列就是数据库视图的用途。根据时间表中包含计算列的表(或其他任何想要的表)构建视图,根据该视图构建模型,然后进行设置。这也可能减轻数据库的压力。这也是为什么将设计限制为只能通过自动迁移完成的操作很危险的一个很好的例子。
添加回答
举报
0/150
提交
取消