A git-based storage backend for tinydb.
Project description
A storage backend for tinydb that stores database changes inside a git branch.
tinydb-git lets you use any branch in a git repository as a backend for tinydb.
hiro@wintermute:tmp$ git init example
Initialized empty Git repository in /tmp/example/.git/
Every modification of the database results in a new commit:
>>> import tinydb
>>> from tinydb_git.json import JSONGitStorage
>>> db = tinydb.TinyDB('example', storage=JSONGitStorage)
>>> db.insert({'text': 'first record'})
1
hiro@wintermute:example$ git log
commit de9a07844783b8e420fce6f9568e126dd7779e74
Updated by tinydb-git 0.1.dev1
commit 3b31825cf312cb5d42f792998faddf20b634c7d9
Updated by tinydb-git 0.1.dev1
Multiple insert() calls result in a commit for each call. This can be avoided by using a tinyrecord transaction:
>>> from tinyrecord import transaction
>>> with transaction(db.table('_default')) as t:
... t.insert({'b': 2})
... t.insert({'c': 3})
... t.insert({'d': 4})
...
>>>
The result:
hiro@wintermute:example$ git log
commit e02a3af06d7cd7eeb6990277777cc24d384249e8
Updated by tinydb-git 0.1.dev1
commit de9a07844783b8e420fce6f9568e126dd7779e74
Updated by tinydb-git 0.1.dev1
commit 3b31825cf312cb5d42f792998faddf20b634c7d9
Updated by tinydb-git 0.1.dev1
Internally, data gets stored as json, with sort_keys=True and indent=2, to make diffs pleasant to read and help with compression:
hiro@wintermute:example$ git diff master^ master
diff --git a/tinydb.json b/tinydb.json
index a27ff44..d9711f0 100644
--- a/tinydb.json
+++ b/tinydb.json
@@ -2,6 +2,15 @@
"_default": {
"1": {
"text": "first record"
+ },
+ "2": {
+ "b": 2
+ },
+ "3": {
+ "c": 3
+ },
+ "4": {
+ "d": 4
}
}
}
\ No newline at end of file
YAML
Alternatively, data can be stored as YAML, which allows things like datetime-Instances to be represented correctly:
>>> import tinydb
>>> from tinydb_git.yaml import YAMLGitStoroage
>>> db = tinydb.TinyDB('example', storage=YAMLGitStoroage)
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
File details
Details for the file tinydb-git-0.2.tar.gz
.
File metadata
- Download URL: tinydb-git-0.2.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ec6304d8695bd412f7e7b1a3433fb6ac4853ba2bd70eb6d204f4bca5448d111 |
|
MD5 | 67e6177e8479b45a4c8014ef4193a0b9 |
|
BLAKE2b-256 | c5d9d16226b1344ddb2f6d4c92788ddbc463d7aa8bd404471016a5c227d75a84 |