【发布时间】:2019-03-06 15:51:29
【问题描述】:
我有这个模型:
类作业(db.Model):
__tablename__ = "job"
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(80), nullable=False)
city = db.Column(db.String(250), nullable=False)
state = db.Column(db.String(10), nullable=False)
zipCode = db.Column(db.String(10), nullable=False)
latitude = db.Column(db.String(10), nullable=False)
longitude = db.Column(db.String(10), nullable=False)
description = db.Column(db.String(200), nullable=False)
narrative = db.Column(db.String(250), nullable=False)
companyLogo = db.Column(db.String(250), nullable=False)
companyName = db.Column(db.String(250), nullable=False)
companyURL = db.Column(db.String(100), nullable=False)
time_created = db.Column(db.DateTime, nullable=False)
active = db.Column(db.Boolean, nullable=False)
我正在尝试更新超过 14 天的条目
@classmethod
def deactivate_old_entries(cls)-> "JobModel":
x_days = date.today() - timedelta(days=14)
return cls.query.filter(Job.time_created < x_days).\
update({"active": (False)})
我知道过滤器部分可以正常工作,因为它正确返回了超过 14 天的条目,在本例中为 11 行
返回的值是 11,在我看来是正确的行数。但是我看不到这 11 行的活动列没有变化。当它们应该显示为假时,它们仍然为真
看起来更改没有提交
这是一个从 celery 调度工作者运行的异步任务。 但是,即使我在来自 POSTMAN 的请求中从视图中运行,它也会执行相同的操作,这意味着它返回 11,但在数据库中的活动列中没有更改。
知道我的错误在哪里吗?
【问题讨论】:
-
你承诺了吗?此外,读者是否保持事务打开,具有阻止他们看到更改的隔离级别?
标签: python postgresql flask sqlalchemy