Integrar Django con una base de datos heredada es una tarea común, especialmente cuando necesitas agregar nuevas funciones o interfaces sin migrar toda la base de datos. Django proporciona herramientas que facilitan este proceso, permitiéndote trabajar con una base de datos existente mientras aprovechas el ORM y la interfaz de administración de Django.
Antes de integrar Django con la base de datos heredada, necesitarás especificar los parámetros de conexión en la configuración DATABASES en settings.py. Debes incluir parámetros como:
'django.db.backends.postgresql', 'django.db.backends.mysql', etc.).'localhost' o una dirección de servidor remoto).5432 para PostgreSQL).Ejemplo de configuración para una base de datos PostgreSQL:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'legacy_db',
'USER': 'db_user',
'PASSWORD': 'db_password',
'HOST': 'localhost',
'PORT': '5432',
}
} Django incluye una herramienta llamada inspectdb que puede generar automáticamente definiciones de modelos al inspeccionar una base de datos existente. Esta herramienta es útil cuando trabajas con un sistema heredado y no deseas definir manualmente todos los modelos.
Para generar los modelos, ejecuta el siguiente comando:
python manage.py inspectdb Este comando generará un código de modelos de Django basado en el esquema de tu base de datos heredada. Puedes guardar la salida en un archivo Python con:
python manage.py inspectdb > models.py La salida de inspectdb no siempre es perfecta y puede requerir ajustes.
Por ejemplo, Django genera modelos no gestionados de forma predeterminada, lo que significa que Django no gestionará el esquema de la base de datos (creación de tablas, migraciones, etc.) para estos modelos.
Puedes modificar este comportamiento configurando managed = True en la clase Meta del modelo si deseas que Django gestione la tabla:
class Person(models.Model):
id = models.IntegerField(primary_key=True)
first_name = models.CharField(max_length=70)
class Meta:
managed = False # Cambia a True si quieres que Django gestione la tabla
db_table = 'legacy_persons' Una vez que hayas limpiado los modelos, coloca el archivo models.py en la carpeta de tu aplicación y agrega la aplicación a la lista INSTALLED_APPS en settings.py.
INSTALLED_APPS = [
# Otras aplicaciones...
'your_app_name',
] Ahora que tienes los modelos de la base de datos heredada configurados, necesitas ejecutar las migraciones de Django para instalar tablas adicionales como auth (para autenticación) y contenttypes.
Esto asegurará que el sistema de administración y permisos de Django funcione correctamente en tu proyecto.
Ejecuta:
python manage.py migrate Este comando aplica las migraciones para las aplicaciones integradas de Django.
En este punto, deberías poder interactuar con tu base de datos heredada a través del ORM de Django. Utiliza la interfaz de administración de Django para ver y editar los datos, o interactúa con los datos usando la API de base de datos de Django.