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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pholguinc_multitenant_core-0.1.0.tar.gz.
File metadata
- Download URL: pholguinc_multitenant_core-0.1.0.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fa9352e6d793c010172b3e219974f68e8c01a741176c07df159cfb188b4ba41
|
|
| MD5 |
9031980075f8ce44172456c98c987e99
|
|
| BLAKE2b-256 |
6175653380df97aa9283ab8cc2260c51d91441d94ef4ff7586e8e32cc6776695
|
File details
Details for the file pholguinc_multitenant_core-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pholguinc_multitenant_core-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d800f0d47a90dd4350cab05fe3fe79133a55bd236cb6d56e1455a38eba9b2d1
|
|
| MD5 |
4a0ea042e7a8b9c6c38d52581edb1639
|
|
| BLAKE2b-256 |
bcfc5c20f5ca12f879d91a04e400165f8c34a7e1029d9c9e4b34249670b2d407
|