对于Web应用程序(使用flask-appbuilder构建),我想在PostgreSQL数据库上使用SQLAlchemy声明性语法时跟踪数据库上的所有更改。 flask-appbuilder "AuditMixin"已经跟踪“上次更改日期”和“上次更改用户”以跟踪谁最后一次更改了行。但是我实际上要保留每一行的旧版本和新版本,以确保问责制。我不介意为Flask或flask-appbuilder贡献一些东西,因为我认为该框架不提供任何可用的东西。因此,我想知道在使用我自己的大脑提出自己的建议之前,是否有针对SQLAlchemy / PostgreSQL /数据库的任何现有解决方案/范例/等都可以普遍使用(最好是按此顺序)(聪明的人已经做的总比什么都好我想出了)。
答案 0 :(得分:3)
除了跟踪创建/修改的日期/用户您已经在做什么,还请使用SQLAlchemy-Continuum
Continuum提供了一种获取给定版本对象的变更集的简便方法。每个版本都包含一个changeset属性,该属性包含该版本中更改字段的字典。
https://sqlalchemy-continuum.readthedocs.io/en/latest/version_objects.html#changeset