首页 > 解决方案 > 烧瓶 SQLAlchemy updated_on

问题描述

我想创建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)

标签: pythonflasksqlalchemy

解决方案


首先,server_onupdate在服务器端不做任何事情,它只是为了让 SQLAlchemy 知道服务器“应该”在更新时生成一个值。这真的很误导人。您必须手动配置数据库以在更新时生成值。SQLAlchemy 不会为你做这件事。

所以使用onupdate. onupdate=datetime.utcnow. 不要忘记导入datetime.


推荐阅读