Skip to main content

A framework-agnostic multi-tenancy core for Python with support for multiple database drivers and schema isolation.

Project description

Multitenant Core

Multitenant Core es un motor de infraestructura potente y flexible diseñado para simplificar la gestión de múltiples clientes (tenants) en aplicaciones Python. Automatiza el aislamiento de datos mediante esquemas o bases de datos independientes, permitiéndote escalar tu SaaS sin complicaciones técnicas.

Instalación

Puedes instalar el paquete y su CLI directamente desde el repositorio o mediante pip (próximamente en PyPI):

pip install pholguinc-multitenant-core

O si estás en desarrollo:

git clone https://github.com/pholguinc/multitenant-core.git
cd multitenant-core
pip install -e .

Uso del CLI

El CLI te permite generar proyectos completos con arquitecturas profesionales y el soporte multitenant ya configurado.

Inicializar un nuevo proyecto

mt-core init mi_gran_proyecto

Durante la inicialización, podrás elegir:

  • Framework: FastAPI, Django o Flask.
  • Arquitectura: Capas (Layered) o Hexagonal (Enterprise).
  • Estrategia: Single DB (Esquemas) o Multi DB (Múltiples bases de datos).
  • Motor: PostgreSQL, MySQL, MariaDB o SQLite.

Core Library: Cómo Aplicar el Paquete

Si no usas el CLI o quieres profundizar en la librería, estos son los dos pilares fundamentales:

1. Aprovisionamiento (Provisioning)

Crea físicamente la infraestructura (Esquema o DB) para un nuevo cliente.

from multitenant_core import TenantDatabaseManager

manager = TenantDatabaseManager("postgresql://user:pass@localhost:5432/main_db")

# Crea el esquema y ejecuta migraciones iniciales
manager.provision_tenant("empresa_alfonso")

2. Conmutación de Contexto (Session Switching)

Accede a los datos de un cliente específico de forma aislada.

# Dentro de tu lógica de negocio
with manager.get_tenant_session("empresa_alfonso") as session:
    # Todas las consultas aquí se ejecutan SOLAMENTE en el esquema de 'empresa_alfonso'
    productos = session.execute("SELECT * FROM productos").fetchall()

Integración en Frameworks

FastAPI (Inyección de Dependencias)

En FastAPI, puedes resolver el tenant desde un Header y usarlo en tus rutas:

from fastapi import FastAPI, Header
from app.core.database import manager

app = FastAPI()

@app.get("/items")
def read_items(x_tenant_id: str = Header(...)):
    with manager.get_tenant_session(x_tenant_id) as session:
        return session.execute("SELECT * FROM items").fetchall()

Django (Servicios)

En Django, puedes usar el manager dentro de tus vistas o servicios:

from django.http import JsonResponse
from app.core.database import manager

def list_items(request):
    tenant_id = request.headers.get('X-Tenant-Id')
    with manager.get_tenant_session(tenant_id) as session:
        data = session.execute("SELECT * FROM items").fetchall()
        return JsonResponse(list(data), safe=False)

Arquitecturas Soportadas por el CLI

  • Layered (Capas): Estructura tradicional ideal para proyectos medianos, con separación clara entre API, Servicios y Repositorios.
  • Hexagonal: Estructura de nivel empresarial (DDD) que separa el Dominio (negocio) de la Infraestructura (base de datos, frameworks), garantizando máxima mantenibilidad.


Autor: pholguinc Versión: 0.1.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pholguinc_multitenant_core-0.1.0.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pholguinc_multitenant_core-0.1.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file pholguinc_multitenant_core-0.1.0.tar.gz.

File metadata

File hashes

Hashes for pholguinc_multitenant_core-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9fa9352e6d793c010172b3e219974f68e8c01a741176c07df159cfb188b4ba41
MD5 9031980075f8ce44172456c98c987e99
BLAKE2b-256 6175653380df97aa9283ab8cc2260c51d91441d94ef4ff7586e8e32cc6776695

See more details on using hashes here.

File details

Details for the file pholguinc_multitenant_core-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pholguinc_multitenant_core-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7d800f0d47a90dd4350cab05fe3fe79133a55bd236cb6d56e1455a38eba9b2d1
MD5 4a0ea042e7a8b9c6c38d52581edb1639
BLAKE2b-256 bcfc5c20f5ca12f879d91a04e400165f8c34a7e1029d9c9e4b34249670b2d407

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page