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==2 | Match any document that has a keyfield with value==2 (also possible:!=,>,>=,<,<=) |
