BTC 72,719.00 +6.48%
ETH 2,127.82 +7.39%
S&P 500 6,869.50 +0.78%
Dow Jones 48,739.41 +0.49%
Nasdaq 22,807.48 +1.29%
VIX 21.15 -10.27%
EUR/USD 1.09 +0.15%
USD/JPY 149.50 -0.05%
Gold 5,169.90 +0.69%
Oil (WTI) 75.99 +1.78%
BTC 72,719.00 +6.48%
ETH 2,127.82 +7.39%
S&P 500 6,869.50 +0.78%
Dow Jones 48,739.41 +0.49%
Nasdaq 22,807.48 +1.29%
VIX 21.15 -10.27%
EUR/USD 1.09 +0.15%
USD/JPY 149.50 -0.05%
Gold 5,169.90 +0.69%
Oil (WTI) 75.99 +1.78%

TinyDB: A Lightweight JSON Database for Small Projects

| 2 Min Read
If you're looking for a JSON document-oriented database that requires no configuration for your Python project, TinyDB could be exactly what you need.

TinyDB is a Python implementation of a NoSQL, document-oriented database. Unlike a traditional relational database, which stores records across multiple linked tables, a document-oriented database stores its information as separate documents in a key-value structure. The keys are similar to the field headings, or attributes, in a relational database table, while the values are similar to the table’s attribute values.

TinyDB uses the familiar Python dictionary for its document structure and stores its documents in a JSON file.

TinyDB is written in Python, making it easily extensible and customizable, with no external dependencies or server setup needed. Despite its small footprint, it still fully supports the familiar database CRUD features of creating, reading, updating, and deleting documents using an API that’s logical to use.

The table below will help you decide whether TinyDB is a good fit for your use case:

Use Case TinyDB Possible Alternatives
Local, small dataset, single-process use (scripts, CLIs, prototypes) simpleJDB, Python’s json module, SQLite
Local use that requires SQL, constraints, joins, or stronger durability SQLite, PostgreSQL
Multi-user, multi-process, distributed, or production-scale systems PostgreSQL, MySQL, MongoDB

Whether you’re looking to use a small NoSQL database in one of your projects or you’re just curious how a lightweight database like TinyDB works, this tutorial is for you. By the end, you’ll have a clear sense of when TinyDB shines, and when it’s better to reach for something else.

Take the Quiz: Test your knowledge with our interactive “TinyDB: A Lightweight JSON Database for Small Projects” quiz. You’ll receive a score upon completion to help you track your learning progress:


Interactive Quiz

TinyDB: A Lightweight JSON Database for Small Projects

If you're looking for a JSON document-oriented database that requires no configuration for your Python project, TinyDB could be what you need.

Get Ready to Explore TinyDB

TinyDB is a standalone library, meaning it doesn’t rely on any other libraries to work. You’ll need to install it, though.

You’ll also use the pprint module to format dictionary documents for easier reading, and Python’s csv module to work with CSV files. You don’t need to install either of these because they’re included in Python’s standard library.

So to follow along, you only need to install the TinyDB library in your environment. First, create and activate a virtual environment, then install the library using pip:

Shell
(venv) $ python -m pip install tinydb

Alternatively, you could set up a small pyproject.toml file and manage your dependencies using uv.

When you add documents to your database, you often do so manually by creating Python dictionaries. In this tutorial, you’ll do this, and also learn how to work with documents already stored in a JSON file. You’ll even learn how to add documents from data stored in a CSV file.

These files will be highlighted as needed and are available in this tutorial’s downloads. You might want to download them to your program folder before you start to keep them handy:

Regardless of the files you use or the documents you create manually, they all rely on the same world population data. Each document will contain up to six fields, which become the dictionary keys used when the associated values are added to your database:

Field Description
continent The continent the country belongs to
location Country
date Date population count made
% of world Percentage of the world’s population
population Population
source Source of population

As mentioned earlier, the four primary database operations are Create, Read, Update, and Delete—collectively known as the CRUD operations. In the next section, you’ll learn how you can perform each of them.

To begin with, you’ll explore the C in CRUD. It’s time to get creative.

Create Your Database and Documents

The first thing you’ll do is create a new database and add some documents to it. To do this, you create a TinyDB() object that includes the name of a JSON file to store your data. Any documents you add to the database are then saved in that file.

Documents in TinyDB are stored in tables. Although it’s not necessary to create a table manually, doing so can help you organize your documents, especially when working with multiple tables.

To start, you create a script named create_db.py that initializes your first database and adds documents in several different ways. The first part of your script looks like this:

Read the full article at https://realpython.com/tinydb-python/ »


[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]

Comments

Please sign in to comment.
Rampagefang Market Intelligence