FireO – ORM para Google Firestore em Python: Guia Completo

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

O Google Firestore é um banco de dados NoSQL em nuvem do Firebase, ideal para armazenar documentos JSON. Ele é perfeito para aplicações escaláveis e em tempo real. No entanto, trabalhar diretamente com o Firestore através do google-cloud-firestore nem sempre é prático, especialmente se você está acostumado com uma abordagem orientada a objetos e código tipado.

FireO é um ORM para Google Firestore, uma biblioteca Python que simplifica o trabalho com o Firestore, oferecendo uma interface semelhante aos ORMs populares. Modelos, campos, validação e relacionamentos — tudo isso agora está disponível no mundo Firebase.

O que é FireO e por que usá-lo

FireO (Firebase ORM) é um mapeamento objeto-relacional para Google Firestore, escrito em Python. A biblioteca permite que desenvolvedores trabalhem com o Firestore como se fosse um banco de dados relacional tradicional, usando classes e objetos em vez de consultas diretas à API.

Principais vantagens do FireO:

  • Facilidade de uso: Sintaxe intuitiva, semelhante ao Django ORM
  • Tipagem de campos: Tipagem forte com validação automática
  • Validação de dados: Verificação integrada antes de salvar
  • Suporte a relacionamentos: Trabalhe com campos de referência e estruturas aninhadas
  • Gerenciamento automático de metadados: Criação automática de timestamps
  • Migrações: Gerenciamento simplificado da estrutura de dados

Instalação e configuração do FireO

Instalando a biblioteca

pip install fireo

Configurando a autenticação

Para trabalhar com o Firestore, é necessário configurar a autenticação via Service Account:

  1. Crie uma Service Account no Firebase Console
  2. Baixe a chave JSON
  3. Defina o caminho da chave na variável de ambiente:
export GOOGLE_APPLICATION_CREDENTIALS="caminho/para/sua-chave.json"

Configuração alternativa de conexão

from fireo import connection

# Conexão via arquivo
connection(from_file="caminho/para/serviceAccountKey.json")

# Conexão via variável de ambiente
connection()

Fundamentos do Firestore e modelo orientado a documentos

Estrutura de dados no Firestore

O Firestore armazena dados na seguinte hierarquia:

  • Banco de dados → Coleções → Documentos → Campos
  • Documentos podem conter subcoleções
  • Campos podem ser de vários tipos: strings, números, arrays, objetos, etc.

Características da abordagem NoSQL

O Firestore é um banco de dados sem esquema, o que significa:

  • Documentos em uma mesma coleção podem ter campos diferentes
  • Não é necessário definir a estrutura antecipadamente
  • Flexibilidade para alterar a estrutura dos dados

O FireO adiciona uma camada de estrutura e validação sobre essa flexibilidade.

Criando modelos no FireO

Modelo básico

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"  # Opcional, por padrão usa o nome da classe

Modelo avançado com validação

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 = ListField                    

Recommendations