Skip to main content

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


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)

Uploaded Source

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

Hashes for tinydb-git-0.1.tar.gz
Algorithm Hash digest
SHA256 59bf135b36afb2fb9db1cf98dc99fc9d2109649fdb88f5ac77fdcdf2e12c7940
MD5 847fcd90d27413313da9a723a3987c0f
BLAKE2b-256 83f24312a93b2f2111d6ddcb1565f85666e262aa5099caa63a760472cf258f6a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page