TinyDB – Base de données NoSQL légère

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Guide complet de TinyDB : la base de données NoSQL légère pour Python

Introduction

Les applications modernes n'ont pas toujours besoin de systèmes de gestion de bases de données puissants et complexes. Lorsqu'un projet ne nécessite ni scalabilité ni traitement à grande vitesse de gros volumes de données, une base de données légère et embarquée suffit amplement. TinyDB – une base de données NoSQL entièrement écrite en Python – offre une solution pratique et simple pour stocker des données structurées sans SQL.

TinyDB sauvegarde les données au format JSON et ne nécessite aucun serveur. Cela en fait un choix idéal pour les scripts, les petits outils en ligne de commande, les applications de bureau, les prototypes et les projets éducatifs. La bibliothèque ne pèse que quelques kilo-octets et a très peu de dépendances, ce qui en fait une excellente option pour des solutions légères.

Installation et configuration de base

Installer TinyDB

Installez TinyDB en une seule ligne avec pip :

pip install tinydb

Pour des fonctionnalités supplémentaires, des extensions sont disponibles :

pip install tinydb[compression]  # Pour compresser les données
pip install tinydb[yaml]         # Pour travailler avec YAML

Créer une base de données

Création d'une base avec sauvegarde dans un fichier :

from tinydb import TinyDB
db = TinyDB('db.json')  # Le fichier sera créé automatiquement

Création d'une base en mémoire :

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

Configurer l'encodage et les paramètres

from tinydb import TinyDB
from tinydb.storages import JSONStorage

# Configuration de l'encodage
db = TinyDB('db.json', encoding='utf-8')

# Configuration des indentations JSON pour la lisibilité
db = TinyDB('db.json', indent=4, separators=(',', ': '))

Structure des données dans TinyDB

TinyDB utilise un modèle de données orienté documents :

  • Les données sont stockées sous forme de liste de documents (dictionnaires Python)
  • Chaque document possède un doc_id unique, généré automatiquement
  • Types supportés : chaînes, nombres, listes, dictionnaires, booléens et null
  • Les documents peuvent avoir des structures différentes dans une même table
  • L'imbrication des données est supportée à n'importe quel niveau

Opérations de base sur les données

Insérer des données

Insertion d'un seul document :

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

# Insertion simple
db.insert({'name': 'Jean', 'age': 30, 'city': 'Paris'})

# Insertion avec récupération de l'ID
doc_id = db.insert({'name': 'Anne', 'age': 25})
print(f"Document ajouté avec l'ID : {doc_id}")

Insertion multiple :

users = [
    {'name': 'Anne', 'age': 25, 'profession': 'Designer'},
    {'name': 'Pierre', 'age': 40, 'profession': 'Développeur'},
    {'name': 'Marie', 'age': 28, 'profession': 'Manager'}
]

doc_ids = db.insert_multiple(users)
print(f"Documents ajoutés : {len(doc_ids)}")

Lire des données

Récupérer tous les documents :

all_users = db.all()
print(f"Nombre total d'utilisateurs : {len(all_users)}")

Récupérer un document par son ID :

user = db.get(doc_id=1)
if user:
    print(f"Utilisateur trouvé : {user['name']}")

Rechercher et filtrer

Recherche de base avec Query :

from tinydb import Query
User = Query()

# Recherche par correspondance exacte
users = db.search(User.name == 'Jean')

# Recherche par condition
adults = db.search(User.age >= 30)

# Récupérer la première correspondance
user = db.get(User.name == 'Anne')

Conditions de recherche avancées :

# ET logique
young_designers = db.se                    

Recommendations