Getting Started

Installing TinyDB

To install TinyDB from PyPI, run:

$ pip install tinydb

You can also grab the latest development version fromGitHub. After downloadingand unpacking it, you can install it using:

$ pip install .

Basic Usage

Let’s cover the basics before going more into detail. We’ll start by setting upa TinyDB database:

>>>fromtinydbimportTinyDB,Query>>>db=TinyDB('db.json')

You now have a TinyDB database that stores its data indb.json.What about inserting some data? TinyDB expects the data to be Pythondicts:

>>>db.insert({'type':'apple','count':7})>>>db.insert({'type':'peach','count':3})

Note

Theinsert method returns the inserted document’s ID. Read moreabout it here:Using Document IDs.

Now you can get all documents stored in the database by running:

>>>db.all()[{'count': 7, 'type': 'apple'}, {'count': 3, 'type': 'peach'}]

You can also iter over stored documents:

>>>foritemindb:>>>print(item){'count': 7, 'type': 'apple'}{'count': 3, 'type': 'peach'}

Of course you’ll also want to search for specific documents. Let’s try:

>>>Fruit=Query()>>>db.search(Fruit.type=='peach')[{'count': 3, 'type': 'peach'}]>>>db.search(Fruit.count>5)[{'count': 7, 'type': 'apple'}]

Next we’ll update thecount field of the apples:

>>>db.update({'count':10},Fruit.type=='apple')>>>db.all()[{'count': 10, 'type': 'apple'}, {'count': 3, 'type': 'peach'}]

In the same manner you can also remove documents:

>>>db.remove(Fruit.count<5)>>>db.all()[{'count': 10, 'type': 'apple'}]

And of course you can throw away all data to start with an empty database:

>>>db.truncate()>>>db.all()[]

Recap

Before we dive deeper, let’s recapitulate the basics:

Inserting
db.insert(...)Insert a document
Getting data
db.all()Get all documents
iter(db)Iter over all documents
db.search(query)Get a list of documents matching the query
Updating
db.update(fields,query)Update all documents matching the query to containfields
Removing
db.remove(query)Remove all documents matching the query
db.truncate()Remove all documents
Querying
Query()Create a new query object
Query().field==2Match any document that has a keyfield with value==2 (also possible:!=,>,>=,<,<=)

« Introduction |Advanced Usage »