Flask SQLAlchemy的updated_on

4
我想创建一个字段 Datetime,它会在行更新时自动更新为当前日期和时间。我尝试了以下代码:
updated_on = Column(DateTime, onupdate=db.func.now())

以及这个:

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

但是只有在我添加新行并更新该行后没有更改时,该字段才会被更新。

class UserLog(db.Model):
    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('user.id'))
    state = Column(String(25))
    created_on = Column(DateTime, server_default=db.func.now())
    updated_on = Column(DateTime, onupdate=datetime.utcnow)
1个回答

1
首先,server_onupdate 并不在服务器端执行任何操作,它只是为了让 SQLAlchemy 知道服务器“应该”在更新时生成一个值。这非常具有误导性。您必须手动配置数据库以在更新时生成值。SQLAlchemy 不会为您执行此操作。
因此,请使用 onupdateonupdate=datetime.utcnow。不要忘记导入 datetime

无论如何 onupdate=datetime.utcnow 都不起作用。当行更改时,此字段中没有更新。 - cruim
好像有些不对劲。onupdate=db.func.now() 也应该可以工作。你能展示更多的代码吗? - Hurried-Helpful
添加模型定义 - cruim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接