PostgreSQL和SQLAlchemy的版本控制和审计扩展。
项目描述
PostgreSQL的审计扩展。为SQLAlchemy和Flask提供额外的扩展。PostgreSQL-Audit试图结合来自现有解决方案(如SQLAlchemy-Continuum、Papertrail以及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 查看哈希)