【问题标题】:Sqlalchemy: How to update a column every 24 hours?Sqlalchemy:如何每 24 小时更新一列?
【发布时间】:2020-05-07 15:53:49
【问题描述】:

我正在使用 python 烧瓶开发一个 REST API,并且我已经通过 sql-alchemy 实现了以下模式。

from app import db
from datetime import datetime
from app.utilities.commons import *

class User(db.model):
    id = id = db.Column(db.String(36), primary_key=True, unique=True, default=get_unique_id())
    username = db.Column(db.String(64), unique=True, nullable=False)
    first_name = db.Column(db.String(64), nullable=False, unique=False)
    last_name = db.Column(db.String(64), nullable=False, unique=False)
    organism = db.Column(db.String(35), nullable=False, unique=False)
    allowed_access_per_day = db.Column(db.Integer, nullable=False, default=0)
    last_modified = db.Column(db.DateTime, nullable=True, default=None)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)

我想做的是每天早上 00 点重置属性 allowed_access_per_day(将其更新为 0)。 作为临时解决方案,我正在做一个 python 线程,它每 24 小时更新一次表,这不是一个好主意,因为它不会对所有连接到数据库的应用程序保持相同的行为。 我想让这种行为特定于数据库(就像 SQL 中的触发器和计时器一样)。 如何在 sql-alchemy 中制作?

【问题讨论】:

    标签: python flask sqlalchemy


    【解决方案1】:

    在核心 sqlalchemy 中,我没有找到像作业/调度这样的东西。有一些附加包作为 sqlalchemy 的插件。 看来你要写调度的

    users.update().values(allowed_access_per_day =0)
    

    你自己。

    【讨论】:

      【解决方案2】:

      您可以插入一个额外的列,您可以在其中写入设置allowed_access_per_day 的日期。 然后在查询中检查它是否来自前一天。

      【讨论】:

      • 我不想处理来自 python 代码或 sql 查询的行为。我想在数据库本身中做出默认行为。 (就像 sql 中的触发器和计时器一样)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2014-05-16
      • 1970-01-01
      • 2019-10-20
      • 2015-08-17
      • 1970-01-01
      相关资源
      最近更新 更多