transaction support for TinyDB
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
tinyrecord Fix bug where using eids would apply actions to all records Feb 6, 2018
.gitignore initial codebase Aug 26, 2014
.travis.yml
README
README.rst
db.json update setup.py Jan 27, 2018
setup.py
test.py update setup.py Jan 27, 2018
tests.py Fix bug where using eids would apply actions to all records Feb 6, 2018

README.rst

TinyDB __  _                                   __
      / /_(_)__  __ _________ _______  _______/ /
     / __/ / _ \/ // / __/ -_) __/ _ \/ __/ _  /
     \__/_/_//_/\_, /_/  \__/\__/\___/_/  \_,_/
               /___/

Supported Pythons: 2.6+, 3.3+

Tinyrecord is a library which implements atomic transaction support for the TinyDB NoSQL database. It uses a record-first then execute architecture which allows us to minimize the time that we are within a thread lock. Usage example:

from tinydb import TinyDB, where
from tinyrecord import transaction

table = TinyDB('db.json').table('table')
with transaction(table) as tr:
    # insert a new record
    tr.insert({'username': 'john'})
    # update records matching a query
    tr.update({'invalid': True}, where('username') == 'john')
    # delete records
    tr.remove(where('invalid') == True)
    # update using a function
    tr.update_callable(updater, where(...))
    # insert many items
    tr.insert_multiple(documents)

Note that due to performance reasons you cannot view the data within a transaction unless you've comitted. You will have to call operations on the transaction object and not the database itself. Since tinyrecord works with dictionaries and the latest API, it will only support the latest version (3.x).

Installation is as simple as pip install tinyrecord.

https://travis-ci.org/eugene-eeo/tinyrecord.svg?branch=master