跳转到主要内容

PostgreSQL和SQLAlchemy的版本控制和审计扩展。

项目描述

Build Status Version Status Downloads

PostgreSQL的审计扩展。为SQLAlchemy和Flask提供额外的扩展。PostgreSQL-Audit试图结合来自现有解决方案(如SQLAlchemy-ContinuumPapertrail以及2nd Quadrant的Audit Trigger)的最佳实践。

与现有解决方案相比,PostgreSQL-Audit具有以下特点

  • 将所有版本存储在名为“activity”的单个表中

  • 使用基于触发器的最小化方法,以尽可能保持INSERT、UPDATE和DELETE的速度

  • 跟踪操作者ID,以便能够快速回答以下问题
    • 谁在x日修改了记录x?

    • 在y和z之间,x做了什么?

    • 你能展示记录 x 的活动历史吗?

安装

pip install PostgreSQL-Audit

运行测试

git clone https://github.com/kvesteri/postgresql-audit.git
cd postgresql-audit
pip install tox
createdb postgresql_audit_test
tox

Flask 扩展

from postgresql_audit.flask import versioning_manager

from my_app.extensions import db


versioning_manager.init(db.Model)


class Article(db.Model):
    __tablename__ = 'article'
    __versioned__ = {}  # <- IMPORTANT!
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)


article = Article(name='Some article')
db.session.add(article)
db.session.commit()

现在我们可以检查新创建的活动。

Activity = versioning_manager.activity_cls

activity = Activity.query.first()
activity.id             # 1
activity.table_name     # 'article'
activity.verb           # 'insert'
activity.old_data       # None
activity.changed_data   # {'id': '1', 'name': 'Some article'}
article.name = 'Some other article'
db.session.commit()

activity = Activity.query.order_by(db.desc(Activity.id)).first()
activity.id             # 2
activity.table_name     # 'article'
activity.verb           # 'update'
activity.object_id      # 1
activity.old_data       # {'id': '1', 'name': 'Some article'}
activity.changed_data   # {'name': 'Some other article'}
db.session.delete(article)
db.session.commit()

activity = Activity.query.order_by(db.desc(Activity.id)).first()
activity.id             # 3
activity.table_name     # 'article'
activity.verb           # 'delete'
activity.object_id      # 1
activity.old_data       # {'id': '1', 'name': 'Some other article'}
activity.changed_data   # None

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

postgresql_audit-0.17.1.tar.gz (28.5 kB 查看哈希)

上传时间

构建分布

postgresql_audit-0.17.1-py3-none-any.whl (15.6 kB 查看哈希)

上传时间 Python 3

由以下机构支持