TinyDB: Banco de dados NoSQL leve para Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Guia Completo do TinyDB: Banco de Dados NoSQL Leve para Python

Introdução

Aplicações modernas nem sempre precisam de sistemas de banco de dados complexos e pesados. Em projetos que não exigem alta escalabilidade ou processamento de grandes volumes de dados, um banco de dados leve e embutido é mais que suficiente. O TinyDB – um banco de dados NoSQL escrito inteiramente em Python – oferece uma solução prática e simples para armazenar dados estruturados sem usar SQL.

O TinyDB salva os dados em formato JSON e não requer a instalação de um servidor. Isso o torna ideal para scripts, ferramentas de linha de comando (CLI), aplicações desktop, protótipos e projetos educacionais. A biblioteca tem apenas alguns quilobytes e dependências mínimas, sendo uma excelente escolha para soluções leves.

Instalação e Configuração Básica

Instalando o TinyDB

Você pode instalar o TinyDB com um único comando via pip:

pip install tinydb

Para funcionalidades extras, existem extensões disponíveis:

pip install tinydb[compression]  # Para compressão de dados
pip install tinydb[yaml]         # Para trabalhar com YAML

Criando um Banco de Dados

Criando um banco com salvamento em arquivo:

from tinydb import TinyDB
db = TinyDB('db.json')  # O arquivo será criado automaticamente

Criando um banco em memória:

from tinydb.storages import MemoryStorage
db = TinyDB(storage=MemoryStorage)

Configurando Codificação e Parâmetros

from tinydb import TinyDB
from tinydb.storages import JSONStorage

# Configurando codificação
db = TinyDB('db.json', encoding='utf-8')

# Configurando indentação JSON para legibilidade
db = TinyDB('db.json', indent=4, separators=(',', ': '))

Fundamentos da Estrutura de Dados do TinyDB

O TinyDB utiliza um modelo de dados orientado a documentos:

  • Os dados são armazenados como uma lista de documentos (dicionários Python)
  • Cada documento possui um doc_id único, gerado automaticamente
  • Tipos suportados: strings, números, listas, dicionários, valores booleanos e null
  • Documentos podem ter estruturas diferentes dentro de uma mesma tabela
  • Suporte a aninhamento de dados em qualquer profundidade

Operações Principais com Dados

Inserindo Dados

Inserindo um único documento:

from tinydb import TinyDB
db = TinyDB('db.json')

# Inserção simples
db.insert({'name': 'João', 'age': 30, 'city': 'São Paulo'})

# Inserção obtendo o ID
doc_id = db.insert({'name': 'Ana', 'age': 25})
print(f"Documento adicionado com ID: {doc_id}")

Inserção múltipla:

usuarios = [
    {'name': 'Ana', 'age': 25, 'profession': 'Designer'},
    {'name': 'Pedro', 'age': 40, 'profession': 'Programador'},
    {'name': 'Maria', 'age': 28, 'profession': 'Gerente'}
]

doc_ids = db.insert_multiple(usuarios)
print(f"Documentos adicionados: {len(doc_ids)}")

Lendo Dados

Obtendo todos os documentos:

todos_usuarios = db.all()
print(f"Total de usuários: {len(todos_usuarios)}")

Obtendo um documento por ID:

usuario = db.get(doc_id=1)
if usuario:
    print(f"Usuário encontrado: {usuario['name']}")

Busca e Filtragem

Fundamentos da busca com Query:

from tinydb import Query
User = Query()

# Busca por correspondência exata
usuarios = db.search(User.name == 'João')

# Busca por condição
adultos = db.search(User.age >= 30)

# Obtendo a primeira correspondência
usuario = db.get(User.name == 'Ana')

Condições de busca complexas:

# Operador lógico E
jovens_designers = db.se                    

Recommendations