Freedom251 › Document Databases
TinyDB

What TinyDB is
TinyDB is a free, open-source document-oriented database written in pure Python for small applications. It targets projects that do not need a SQL database or an external database server. Data is stored in JSON files by default, with in-memory storage also available. The API supports inserting, searching, updating, and removing documents, while queries handle comparisons, regular expressions, custom tests, nested fields, and logical combinations. Tables organize documents, and middleware can add storage types or change storage behavior. Listed extensions include asyncio compatibility, object serialization, and a smart query cache. TinyDB has no external dependencies, is self-hosted, and its current release requires Python 3.10 or later. It is in maintenance mode, with no significant new features or architectural changes planned. The project uses the MIT license and does not provide transactions.
Who it suits
TinyDB suits developers building small Python applications that need simple document storage without a database server. It is less suitable for concurrent, high-performance, or relational workloads.
What it does well
- Pure Python with no external dependencies
- JSON-file and in-memory storage options
- Queries support nested fields and comparisons
- Middleware enables storage customization
- MIT-licensed and self-hosted
What to know first
- No transactions
- Not intended for multi-process or multi-thread access
- No indexes, relationships, or HTTP server
- Current release requires Python 3.10 or later
Limits
TinyDB has no transactions and is not designed for workloads requiring indexes, an HTTP server, relationships, ACID guarantees, multi-process or multi-thread access, or high performance. Callable query predicates execute in-process and should not use untrusted input.
Getting started
- Open the TinyDB documentation website
- Install the package from PyPI with pip install tinydb
- Use Python 3.10 or later
- Choose JSON-file storage or in-memory storage
- Create tables and use the API to insert, query, update, or remove documents
Verdict
TinyDB offers straightforward document storage for small Python apps, with flexible queries and lightweight deployment. Its documented limits make it a poor fit for demanding concurrency, relational features, or high-performance systems.
Questions
Is TinyDB free?
Yes. TinyDB is free and open source, with MIT licensing.
Where does TinyDB run?
It is self-hosted on Linux and requires Python 3.10 or later in the current release.
What storage formats are available?
TinyDB stores JSON by default and also offers in-memory storage; listed document formats include JSON, Pickle, and YAML.
Does TinyDB provide transactions?
No. TinyDB does not provide transactions.
Is TinyDB actively adding major features?
The project is in maintenance mode, with no significant new features or architectural changes planned.
Facts from TinyDB's own pages
- Data operations
- Its API supports inserting, searching, updating, and removing documents. · tinydb.readthedocs.io, 9 Oct 2026
- Extensibility
- Users can add custom storage implementations and middleware. · tinydb.readthedocs.io, 9 Oct 2026
- Extensions
- The documentation lists community extensions including aiotinydb, tinydb-rust, and tinyrecord. · tinydb.readthedocs.io, 9 Oct 2026
- Installation
- The documentation says to install TinyDB from PyPI with `pip install tinydb`. · tinydb.readthedocs.io, 4 Oct 2026
- Intended use
- TinyDB is aimed at small apps that would be poorly served by a SQL database or an external database server. · github.com, 4 Oct 2026
- Language and dependencies
- TinyDB is written in pure Python and has no external dependencies. · tinydb.readthedocs.io, 9 Oct 2026
- License
- The project metadata identifies the license as MIT. · github.com, 4 Oct 2026
- Limitations
- The documentation advises against TinyDB when an application needs multi-process or multi-thread access, table indexes, an HTTP server, relationships, ACID guarantees, or high performance. · tinydb.readthedocs.io, 9 Oct 2026
- Maintenance
- TinyDB is in maintenance mode, with no significant new features or architectural changes planned, though bug fixes and community-contributed features may be released. · github.com, 9 Oct 2026
- Notable limits
- The documentation advises against TinyDB when an application needs multi-process or multi-thread access, indexes, an HTTP server, table relationships, ACID guarantees, or high performance. · tinydb.readthedocs.io, 4 Oct 2026
- Purpose
- TinyDB is a lightweight, document-oriented database intended for small apps that would be poorly served by a SQL database or external database server. · github.com, 9 Oct 2026
- Python support
- The project says it has been tested with Python 3.8 through 3.13 and PyPy3. · github.com, 9 Oct 2026
- Queries
- Queries support comparisons, regular expressions, custom tests, nested fields, and logical combinations. · tinydb.readthedocs.io, 9 Oct 2026
- Security
- The security policy asks vulnerability reporters to use GitHub’s private vulnerability reporting feature and says it aims to respond within seven days. · github.com, 4 Oct 2026
- Security limits
- The security policy says TinyDB is not designed for adversarial multi-tenant environments and recommends validating data before storage. · github.com, 4 Oct 2026
- Security note
- The documentation warns that callable query predicates execute in-process and must not come from untrusted or user-controlled input. · tinydb.readthedocs.io, 9 Oct 2026
- Storage
- By default, TinyDB stores data on disk in JSON format. · tinydb.readthedocs.io, 9 Oct 2026
- Tables
- TinyDB supports tables for organizing documents within a database. · tinydb.readthedocs.io, 9 Oct 2026
- What it is
- TinyDB is a tiny, document-oriented database written in pure Python. · tinydb.readthedocs.io, 4 Oct 2026
Where TinyDB stands on Freedom251
- Document Databases#22 of 28