【发布时间】:2021-06-23 11:19:07
【问题描述】:
将 SQLAlchemy 与 flask_sqlalchemy 和用于 PostgreSQL 的 alembic 一起使用。我对字段有以下定义:
date_updated = db.Column(db.DateTime, server_default=db.func.now(), server_onupdate=db.func.now())
但是,当记录被修改时,该字段永远不会更新。它设置在创建并且从不更新。这是 alembic 生成的用于创建表的内容:
sa.Column('date_updated', sa.DateTime(), server_default=sa.text('now()'), nullable=True),
所以它没有被更新也就不足为奇了,因为 server_onupdate 参数似乎没有超过 alembic。
我不确定执行此操作的正确方法。 SQLAlchemy 文档非常复杂,并且不清楚这涉及到什么地方。
编辑:从直接在 PostgreSQL 中查看如何执行此操作,看起来它需要使用触发器。如果可能的话,我宁愿在数据库级别而不是在应用程序级别执行此操作,但我不知道是否可以通过 SQLAlchemy 添加触发器。我可以直接将它添加到数据库中,但在应用迁移时可能会中断。
【问题讨论】:
标签: sqlalchemy alembic