Cómo integrar Django con una base de datos legada

Mientras Django se adapta mejor para desarrollar nuevas aplicaciones, es posible integrarlo en bases de datos legadas. Django incluye un par de utilidades para automatizar lo máximo posible este proceso.

Este documento supone que conoces los fundamentos de Django, como se cubre en el tutorial.

Una vez tengas Django configurado, seguirás este proceso general para integrarte con una base de datos existente.

Dale a Django tus parámetros de base de datos

Necesitarás decirle a Django qué son los parámetros de conexión de la base de datos y qué es el nombre de la base de datos. Hazlo editando la DATABASES configuración y asignando valores a las siguientes claves para la conexión 'default':

Genera automáticamente los modelos

Django incluye una utilidad llamada inspectdb que puede crear modelos mediante la introspección de una base de datos existente. Puedes ver el resultado ejecutando este comando:

$ python manage.py inspectdb

Guarda esto como un archivo utilizando la redirección estándar de Unix para la salida:

$ python manage.py inspectdb > models.py

Esta característica se utiliza como atajo, no como generación definitiva de modelos. Consulta la documentación de inspectdb para obtener más información.

Una vez que hayas limpiado tus modelos, nombra el archivo models.py y colócalo en el paquete Python que contiene tu aplicación. Luego agrega la aplicación a tu INSTALLED_APPS configuración.

Por defecto, inspectdb crea modelos no administrados. Es decir, managed = False en la clase Meta del modelo indica a Django que no gestione la creación, modificación y eliminación de cada tabla:

class Person(models.Model):
    id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=70)

    class Meta:
        managed = False
        db_table = "CENSUS_PERSONS"

Si deseas permitir que Django gestione el ciclo de vida de la tabla, deberás cambiar la opción managed anterior a True (o eliminarla porque True es su valor por defecto).

Instala las tablas de Django

A continuación, ejecuta el comando migrate para instalar registros de base de datos adicionales como permisos de administrador y tipos de contenido:

$ python manage.py migrate

Test y ajusta

Estos son los pasos básicos – desde aquí querrás ajustar los modelos que Django generó hasta que funcionen como desees. Intenta acceder a tus datos mediante la API de base de datos de Django, y intenta editar objetos mediante el sitio administrativo de Django, y edita el archivo de modelos en consecuencia.