Как сбросить значение, хранящееся в SQLAlchemy при доступе к запросу? - PullRequest
0 голосов
/ 29 июня 2019

У меня есть класс 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 увеличивается в течение дня, но обновляется / сбрасывается на следующий день.

Есть ли способ обновить / сбросить «daily_counter» во время запроса (например: MyEventCounter.query.all ()), если «last_updated_at» был в предыдущий день? PS: может быть что-то вроде вычисляемого свойства

1 Ответ

1 голос
/ 30 июня 2019

Да, вы должны использовать свойство.Это должно быть так просто, как:

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
...