Versioning and auditing extension for PostgreSQL and SQLAlchemy.
Project description
Auditing extension for PostgreSQL. Provides additional extensions for SQLAlchemy and Flask. PostgreSQL-Audit tries to combine the best of breed from existing solutions such as SQLAlchemy-Continuum, Papertrail and especially Audit Trigger by 2nd Quadrant.
Compared to existing solutions PostgreSQL-Audit has the following charasteristics:
Stores all versions into single table called ‘activity’
Uses minimalistic trigger based approach to keep INSERTs, UPDATEs and DELETEs as fast as possible
- Tracks actor IDs to be able to answer these questions quickly:
Who modified record x on day x?
What did person x do between y and z?
Can you show me the activity history of record x?
Installation
pip install PostgreSQL-Audit
Running the tests
git clone https://github.com/kvesteri/postgresql-audit.git cd postgresql-audit pip install tox createdb postgresql_audit_test tox
Flask extension
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()
Now we can check the newly created activity.
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file postgresql_audit-0.17.1.tar.gz
.
File metadata
- Download URL: postgresql_audit-0.17.1.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7816def8826ecd2f6d4b720762829512a00ab4fdd6d3cac266eca7cef5865832 |
|
MD5 | 91f4a01b46c0763b855a992b99a2f4a5 |
|
BLAKE2b-256 | afe84aa7c0d8388a230545144d9e0880714c2236702d1e712321bfa7ea68b343 |
Provenance
File details
Details for the file postgresql_audit-0.17.1-py3-none-any.whl
.
File metadata
- Download URL: postgresql_audit-0.17.1-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 499952dc028b5bb7baaa0262b98c0b26a07fc3e2929ab47a54149d1d333afd7f |
|
MD5 | e068254f68bf68d4b3ad9889c4218de9 |
|
BLAKE2b-256 | fb0d6d19ac0335644a862830dfc7f9b224b2ca84b82b4f346763d3f75d24fd43 |