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 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
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
tinydb-git-0.1.tar.gz
(3.0 kB
view details)
File details
Details for the file tinydb-git-0.1.tar.gz
.
File metadata
- Download URL: tinydb-git-0.1.tar.gz
- Upload date:
- Size: 3.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59bf135b36afb2fb9db1cf98dc99fc9d2109649fdb88f5ac77fdcdf2e12c7940 |
|
MD5 | 847fcd90d27413313da9a723a3987c0f |
|
BLAKE2b-256 | 83f24312a93b2f2111d6ddcb1565f85666e262aa5099caa63a760472cf258f6a |