允许用户使用SQLAlchemy从数据库审计跟踪回滚

2024-10-17 00:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始在一个新的项目中使用SQLAlchemy,在这个项目中,我计划实现一个类似于在这个静止中提议的审计跟踪:

因为我已经有了“有趣”对象的完整历史,所以我考虑允许用户回滚到给定的版本,给他们无限的undo。在

用SQLAlchemy可以用干净的方式完成吗?在

业务的和内部特性是什么?在

我是一个沿着user.rollback(ver=42)的人。在


Tags: and项目inforsqlalchemyonauditdatabase
1条回答
网友
1楼 · 发布于 2024-10-17 00:28:06

虽然我没有专门使用SQLAlchemy,但我可以给您一些可以在任何ORM中轻松实现的一般提示:

  • 将版本化的项分离成两个表,比如Document和{}。Document存储永远不会在版本之间更改的信息,DocumentVersion存储确实发生更改的信息。在
  • 给每个DocumentVersion一个“父”引用。为同一个表创建一个外键,指向文档的前一个版本。在
  • 通过将引用从Document更新到“当前”版本,回滚到以前的版本。不要从链的底部删除版本。在
  • 当它们在回滚后生成新版本时,它将创建另一个版本分支。在

例如,创建A、B、C、回滚到B、创建D、E:

(A)
 |
(B)
 | \
(C) (D)
     |
    (E)

相关问题 更多 >