TinyDB: Base de datos NoSQL ligera para Python

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Guía completa de TinyDB: base de datos NoSQL ligera para Python

Introducción

Las aplicaciones modernas no siempre necesitan sistemas de bases de datos potentes y complejos. En casos donde el proyecto no requiere escalabilidad ni alta velocidad de procesamiento de grandes volúmenes de datos, una base de datos ligera e integrada es suficiente. TinyDB, una base de datos NoSQL escrita completamente en Python, ofrece una solución cómoda y sencilla para almacenar datos estructurados sin necesidad de SQL.

TinyDB guarda los datos en formato JSON y no requiere la instalación de un servidor. Esto la hace ideal para scripts, pequeñas herramientas CLI, aplicaciones de escritorio, prototipos y proyectos educativos. La biblioteca pesa solo unos pocos kilobytes y tiene dependencias mínimas, lo que la convierte en una excelente opción para soluciones ligeras.

Instalación y configuración básica

Instalación de TinyDB

Puedes instalar TinyDB con una sola línea usando pip:

pip install tinydb

Para funcionalidades adicionales, están disponibles las siguientes extensiones:

pip install tinydb[compression]  # Para comprimir datos
pip install tinydb[yaml]         # Para trabajar con YAML

Creación de la base de datos

Crear una base de datos guardada en un archivo:

from tinydb import TinyDB
db = TinyDB('db.json')  # El archivo se creará automáticamente

Crear una base de datos en memoria:

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

Configuración de codificación y parámetros

from tinydb import TinyDB
from tinydb.storages import JSONStorage

# Configurar codificación
db = TinyDB('db.json', encoding='utf-8')

# Configurar sangría JSON para legibilidad
db = TinyDB('db.json', indent=4, separators=(',', ': '))

Fundamentos de la estructura de datos de TinyDB

TinyDB utiliza un modelo de datos orientado a documentos:

  • Los datos se almacenan como una lista de documentos (diccionarios de Python)
  • Cada documento tiene un doc_id único, generado automáticamente
  • Tipos compatibles: cadenas, números, listas, diccionarios, valores booleanos y null
  • Los documentos pueden tener diferentes estructuras dentro de una misma tabla
  • Se admite anidamiento de datos a cualquier profundidad

Operaciones básicas con datos

Inserción de datos

Insertar un solo documento:

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

# Inserción simple
db.insert({'name': 'Juan', 'age': 30, 'city': 'Madrid'})

# Inserción obteniendo el ID
doc_id = db.insert({'name': 'Ana', 'age': 25})
print(f"Documento agregado con ID: {doc_id}")

Inserción múltiple:

usuarios = [
    {'name': 'Ana', 'age': 25, 'profession': 'Diseñadora'},
    {'name': 'Pedro', 'age': 40, 'profession': 'Programador'},
    {'name': 'María', 'age': 28, 'profession': 'Gerente'}
]

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

Lectura de datos

Obtener todos los documentos:

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

Obtener un documento por ID:

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

Búsqueda y filtrado

Fundamentos de búsqueda con Query:

from tinydb import Query
Usuario = Query()

# Búsqueda por coincidencia exacta
usuarios = db.search(Usuario.name == 'Juan')

# Búsqueda por condición
adultos = db.search(Usuario.age >= 30)

# Obtener la primera coincidencia
usuario = db.get(Usuario.name == 'Ana')

Condiciones de búsqueda complejas:

# Operador lógico Y
disenadores_jovenes = db.se                    

Recommendations