我有一个简单的用户模型,定义如下:

# models.py
from datetime import datetime
from myapp import db

class User(db.Model):
  id = db.Column(db.Integer(), primary_key=True)
  email = db.Column(db.String(100), unique=True)
  password = db.Column(db.String(100))
  date_updated = db.Column(db.DateTime())

  def __init__(self, email, password, date_updated=None):
    self.email = email
    self.password = password
    self.date_updated = datetime.utcnow()

当我创建一个新的用户对象时,我的date_updated字段被设置为当前时间.我想要做的是,使whenever我保存对我的用户对象的更改,我的date_updated字段自动设置为当前时间.

我已经翻遍了文档,但无论如何,我似乎找不到任何与此有关的参考资料.我对SQLAlChemy非常陌生,所以我确实没有以前的经验可供借鉴.

希望得到一些反馈,谢谢.

推荐答案

只需在列字段中添加server_defaultdefault参数:

created_on = db.Column(db.DateTime, server_default=db.func.now())
updated_on = db.Column(db.DateTime, server_default=db.func.now(), server_onupdate=db.func.now())

我更喜欢{created,updated}_on个列名

SQLAlChemy文档大约有column insert/update defaults个.

[Edit]:已更新代码,以便在代码中使用server_default个参数.

[Edit 2]:server_onupdate个参数替换了onupdate.

Database相关问答推荐

MongoDB事务,回调API方法

我应该使用哪种数据库模型在运行时动态修改实体/属性?

我应该为 Realm 中的每个实体定义主键吗?

将 .frm 和 .opt 文件导入 MySQL

查询最后一天、上周、上个月SQLite

SQL 历史(history)表设计

当使用多个 WHEN MATCHED 语句时,它们是全部执行,还是只执行一个?

触发器内的多个插入/更新语句?

行之间的 SQL 差异

在 SQL SERVER 中监视 SQL 查询的进度

在 SQL 数据库之间共享数据

在 MySQL 中 Select 浮点数

我应该在数据库模式中允许空值吗?

省略日期中的毫秒数

在数据库中存储年份

Redis Pub/Sub 和 Redis Stream 之间的主要区别是什么?

为什么用 varbinary 而不是 varchar

如何在 Google AppEngine 上实现自动增量

用于存储文件夹系统的数据库模式的 Select

Phonegap 离线数据库