SCHEMAS.md 1.2 KB

Implementación SIMPLE (sin librerías externas)

Crear schemas

CREATE SCHEMA proyecto_a;
CREATE SCHEMA proyecto_b;

Configurar search_path por proyecto

En cada proyecto Django, su settings.py:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "miservicio_db",
        "USER": "dbuser",
        "PASSWORD": "secret",
        "HOST": "localhost",
        "PORT": 5432,
        "OPTIONS": {
            "options": "-c search_path=proyecto_a,public"
        }
    }
}

En el otro proyecto:

"options": "-c search_path=proyecto_b,public"

Migrar normalmente

python manage.py migrate

Django creará automáticamente:

proyecto_a.django_migrations
proyecto_a.auth_user
proyecto_a.miapp_modelo
  • Sin prefijos
  • Sin routers
  • Sin hacks
  • 100 % soportado

Este detalle es CLAVE

Cada proyecto tendrá sus propias:

  • django_migrations
  • auth_*
  • contenttypes
  • sessions
  • admin

NO compartas estas tablas entre proyectos. Eso es pedir corrupción de datos.

Comandos para gestionar schemas

To display schemas:

\dn - list of schemas

To change schema, you can try:

SET search_path TO