FireO – ORM para Google Firestore en 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

Google Firestore es una base de datos NoSQL en la nube de Firebase, diseñada para almacenar documentos JSON. Es ideal para aplicaciones escalables y en tiempo real. Sin embargo, trabajar directamente con Firestore a través de google-cloud-firestore no siempre es cómodo, especialmente si estás acostumbrado a un enfoque orientado a objetos y código tipado.

FireO, el ORM para Google Firestore, es una librería de Python que simplifica el trabajo con Firestore al ofrecer una interfaz similar a los ORM más populares. Modelos, campos, validación, relaciones... todo esto ahora está disponible en el mundo de Firebase.

¿Qué es FireO y por qué deberías usarlo?

FireO (Firebase ORM) es un mapeo objeto-relacional para Google Firestore, escrito en Python. Esta librería permite a los desarrolladores trabajar con Firestore como si fuera una base de datos relacional tradicional, utilizando clases y objetos en lugar de consultas directas a la API.

Principales ventajas de FireO:

  • Facilidad de uso: Sintaxis intuitiva, similar a Django ORM
  • Tipado de campos: Tipado estricto con validación automática
  • Validación de datos: Verificación integrada antes de guardar
  • Soporte para relaciones: Trabajo con campos de referencia y estructuras anidadas
  • Gestión automática de metadatos: Creación automática de marcas de tiempo
  • Migraciones: Gestión simplificada de la estructura de datos

Instalación y configuración de FireO

Instalación de la librería

pip install fireo

Configuración de autenticación

Para trabajar con Firestore, debes configurar la autenticación mediante una cuenta de servicio:

  1. Crea una cuenta de servicio en Firebase Console
  2. Descarga la clave JSON
  3. Indica la ruta de la clave en una variable de entorno:
export GOOGLE_APPLICATION_CREDENTIALS="ruta/a/tu-clave.json"

Configuración alternativa de conexión

from fireo import connection

# Conexión mediante archivo
connection(from_file="ruta/al/serviceAccountKey.json")

# Conexión mediante variable de entorno
connection()

Fundamentos de Firestore y el modelo orientado a documentos

Estructura de datos en Firestore

Firestore almacena datos en la siguiente jerarquía:

  • Base de datos → Colecciones → Documentos → Campos
  • Los documentos pueden contener subcolecciones
  • Los campos pueden ser de varios tipos: cadenas, números, arrays, objetos, etc.

Particularidades del enfoque NoSQL

Firestore es una base de datos sin esquema, lo que significa:

  • Los documentos de una misma colección pueden tener campos diferentes
  • No es necesario definir la estructura de antemano
  • Flexibilidad para modificar la estructura de los datos

FireO añade una capa de estructura y validación sobre esta flexibilidad.

Creación de modelos en FireO

Modelo básico

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

class Usuario(Model):
    nombre = TextField(required=True, max_length=100)
    edad = NumberField(required=True)
    activo = BooleanField(default=True)
    
    class Meta:
        collection_name = "usuarios"  # Opcional, por defecto usa el nombre de la clase

Modelo avanzado con validación

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

class Perfil(Model):
    usuario_id = TextField(required=True)
    email = EmailField(required=True)
    creado_en = DateTimeField(default=datetime.now)
    etiquetas = ListField                    

Recommendations