如何在查询访问期间重置存储在SQLAlchemy中的值?

时间:2019-06-29 05:28:59

标签: python flask sqlalchemy flask-sqlalchemy

我有一个带有变量的SQLAlchemy db.Model类,我想在查询访问期间更新/重置其值?

import datettime as dt

class MyEventCounter(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title =  db.Column(db.String(128))
    daily_counter = db.Column(db.Integer, default=0)
    last_updated_at = db.Column(db.DateTime, nullable=False,
    default=dt.datetime.utcnow)

daily_counter整天增加,但是第二天更新/重置。

如果“ last_updated_at”是在前一天,是否有一种方法可以在查询过程中更新/重置“ daily_counter”(例如:MyEventCounter.query.all())? PS:也许有点像计算属性

1 个答案:

答案 0 :(得分:1)

是的,您应该使用属性。它应该像这样简单:

from datetime import datetime as dt

@property
def counter(self):
    if self.last_updated_at.date() < dt.now().date():
        self.last_updated_at = dt.now()
        self.daily_counter = 0
        db.session.commit()

    return self.daily_counter