Skip to main content

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)

Metadata

Release files for tinydb-git 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tinydb-git 0.2
File Size Uploaded
tinydb-git-0.2.tar.gz 3.5 kB Details

Release files / tinydb-git-0.2.tar.gz

Download URL tinydb-git-0.2.tar.gz
Size 3.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8ec6304d8695bd412f7e7b1a3433fb6ac4853ba2bd70eb6d204f4bca5448d111
BLAKE2b-256 checksum
How to use checksums
c5d9d16226b1344ddb2f6d4c92788ddbc463d7aa8bd404471016a5c227d75a84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2 This release

1 release file

0.2.dev1

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page