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)
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
|