SQLALCHEMY:将hybrid属性与hybrid方法一起使用
我有下面的一段代码,一个DB模型和一些混合属性和方法SQLALCHEMY:将hybrid属性与hybrid方法一起使用,sqlalchemy,flask-sqlalchemy,Sqlalchemy,Flask Sqlalchemy,我有下面的一段代码,一个DB模型和一些混合属性和方法 class MyModel(DeclarativeBase): """ MyModel Table. """ __tablename__ = 'my_model' x = Column(DateTime, nullable=False) y = Column(DateTime, default = date(1970,1,1), nullable=False) z =
class MyModel(DeclarativeBase):
"""
MyModel Table.
"""
__tablename__ = 'my_model'
x = Column(DateTime, nullable=False)
y = Column(DateTime, default = date(1970,1,1), nullable=False)
z = Column(DateTime, default = date(1970,1,1), nullable = False)
@hybrid_method
def did_not_run_since(self, days_since):
return self.x <= datetime.utcnow() - timedelta(days = days_since)
@hybrid_method
def did_not_run_since_y(self, days_since):
return self.y_hybr <= datetime.utcnow() - timedelta(days = days_since)
@hybrid_method
def did_not_run_since_z(self, days_since):
return self.z_hybr <= datetime.utcnow() - timedelta(days = days_since)
@hybrid_property
def y_hybr(self):
return self.x if self.y == datetime(1970,1,1) else self.y
@hybrid_property
def z_hybr(self):
return self.x if self.z == datetime(1970,1,1) else self.z
在我的数据库中,我有许多来自y、z列的条目,它们是01-01-1970,但据我所知,尽管混合_属性y_hybr、z_hybr,如果它们是01-01-1970,则应将它们替换为x值。但不知何故,当我使用混合方法时,这部分缺失/未被评估
我做错了什么?
我真的可以在混合方法中使用混合属性吗?
我是否必须始终为每个混合方法/表达式定义一个表达式
提前谢谢
session.query(MyModel).filter(MyModel.did_not_run_since_y(40) == True).count()