FireO – ORM pour Google Firestore en Python

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

Google Firestore est une base de données NoSQL cloud de Firebase, conçue pour stocker des documents JSON. Elle est idéale pour les applications évolutives et en temps réel. Cependant, travailler directement avec Firestore via google-cloud-firestore n'est pas toujours pratique, surtout si vous êtes habitué à une approche orientée objet et à un code typé.

FireO – l'ORM pour Google Firestore – est une bibliothèque Python qui simplifie l'utilisation de Firestore en offrant une interface similaire aux ORM populaires. Modèles, champs, validation, relations : tout cela est désormais accessible dans l'univers Firebase.

Qu'est-ce que FireO et pourquoi l'utiliser ?

FireO (Firebase ORM) est un mapping objet-relationnel pour Google Firestore, écrit en Python. Cette bibliothèque permet aux développeurs de travailler avec Firestore comme avec une base de données relationnelle traditionnelle, en utilisant des classes et des objets plutôt que des requêtes API directes.

Principaux avantages de FireO :

  • Simplicité d'utilisation : Syntaxe intuitive, similaire à Django ORM
  • Typage des champs : Typage strict avec validation automatique
  • Validation des données : Vérification intégrée avant sauvegarde
  • Support des relations : Gestion des champs de référence et des structures imbriquées
  • Gestion automatique des métadonnées : Création automatique d'horodatages
  • Migrations : Gestion simplifiée de la structure des données

Installation et configuration de FireO

Installation de la bibliothèque

pip install fireo

Configuration de l'authentification

Pour utiliser Firestore, vous devez configurer l'authentification via un Service Account :

  1. Créez un Service Account dans la console Firebase
  2. Téléchargez la clé JSON
  3. Indiquez le chemin vers la clé dans une variable d'environnement :
export GOOGLE_APPLICATION_CREDENTIALS="chemin/vers/votre-cle.json"

Configuration alternative de la connexion

from fireo import connection

# Connexion via fichier
connection(from_file="chemin/vers/serviceAccountKey.json")

# Connexion via variable d'environnement
connection()

Fondamentaux de Firestore et du modèle orienté document

Structure des données dans Firestore

Firestore stocke les données selon la hiérarchie suivante :

  • Base de données → Collections → Documents → Champs
  • Documents peuvent contenir des sous-collections
  • Champs peuvent être de différents types : chaînes, nombres, tableaux, objets, etc.

Particularités de l'approche NoSQL

Firestore est une base de données sans schéma, ce qui signifie :

  • Les documents d'une même collection peuvent avoir des champs différents
  • Pas besoin de définir la structure à l'avance
  • Flexibilité pour modifier la structure des données

FireO ajoute une couche de structure et de validation par-dessus cette flexibilité.

Création de modèles dans FireO

Modèle de base

from fireo.models import Model
from fireo.fields import TextField, NumberField, BooleanField

class User(Model):
    name = TextField(required=True, max_length=100)
    age = NumberField(required=True)
    is_active = BooleanField(default=True)
    
    class Meta:
        collection_name = "users"  # Optionnel, par défaut le nom de la classe est utilisé

Modèle avancé avec validation

from fireo.fields import EmailField, DateTimeField, ListField
from datetime import datetime

class Profile(Model):
    user_id = TextField(required=True)
    email = EmailField(required=True)
    created_at = DateTimeField(default=datetime.now)
    tags = ListFiel                    

Recommendations