Skip to content

ckrashh/ORM_django

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ORM_django

Preguntas Teoricas

Realizando Búsquedas de Índice

Investiga qué son los índices en bases de datos y su utilidad en Django.

R: Los índices en bases de datos son estructuras que permiten acelerar la búsqueda y recuperación de información, funcionando de manera similar al índice de un libro: en lugar de recorrer toda la tabla, el sistema consulta el índice para localizar rápidamente los registros deseados. Esto mejora significativamente el rendimiento de las consultas, especialmente en tablas grandes, ya que reduce el tiempo de acceso a los datos y optimiza el uso de recursos del sistema. En Django, los índices son fundamentales para optimizar el rendimiento del ORM (Object-Relational Mapping).

Exclusión de Campos del Modelo

Explica cómo Django maneja la omisión de ciertos campos en consultas

R: En Django, cuando necesitas optimizar el rendimiento de tus consultas y solo requieres un subconjunto de los campos de un modelo, puedes utilizar los métodos only() y defer() del ORM. Ambos están diseñados para evitar cargar datos innecesarios desde la base de datos, lo que reduce el uso de memoria y acelera las consultas.

  1. only() El método only() especifica exactamente qué campos deseas cargar en la consulta. Solo los campos listados en only() serán recuperados de la base de datos, y el resto se omitirán (aunque seguirán disponibles en el objeto si se acceden más tarde, pero requerirán una consulta adicional).
  2. defer() El método defer() hace lo opuesto: especifica qué campos no deseas cargar inicialmente. Todos los campos excepto los listados en defer() serán recuperados.

Pasando Parámetros a raw()

Explica la diferencia y beneficios de esta técnica.

R:En Django, el método raw() del ORM permite ejecutar consultas SQL crudas (raw SQL) directamente, pero con la ventaja de que los resultados se mapean automáticamente a instancias de tus modelos. Cuando usas raw(), es importante entender cómo pasar parámetros de forma segura para evitar inyecciones SQL y mejorar el rendimiento.

#Ejecutando SQL Personalizado Directamente Explica cuándo es recomendable usar esta técnica.

R: Ejecutar SQL personalizado directamente en Django (usando métodos como raw(), connection.cursor(), o RawSQL) es una técnica poderosa, pero debe utilizarse solo en situaciones específicas donde el ORM de Django no sea suficiente.

  1. Consultas muy complejas o específicas Cuando una consulta SQL requiere joins, subconsultas o funciones agregadas avanzadas que el ORM de Django no puede representar fácilmente. Por ejemplo, consultas con ventanas (window functions) o CTE (Common Table Expressions).

  2. Optimización de rendimiento En algunos casos, una consulta escrita a mano puede ser más eficiente que la generada por el ORM, especialmente cuando se necesita un control total sobre los índices, el orden o los planes de ejecución del motor SQL.

Conexiones y Cursores

explica sus ventajas y desventajas frente al ORM.

R: Django permite acceder directamente a la base de datos mediante el uso de conexiones y cursores, a través del módulo django.db.connection. Este enfoque se utiliza cuando necesitas ejecutar consultas SQL personalizadas o realizar operaciones que no están cubiertas por el ORM (Object-Relational Mapping).

Invocación a Procedimientos Almacenados

Investiga qué son los procedimientos almacenados y cómo se usan en Django.

R:¿Qué es un Procedimiento Almacenado? Un procedimiento almacenado (Stored Procedure) es un conjunto de instrucciones SQL que se almacenan en la base de datos y se pueden ejecutar cuando se necesiten, pasando parámetros si hace falta.

Django no tiene una API ORM directa para procedimientos almacenados, pero puedes usarlos fácilmente a través de la conexión con SQL nativo. Se hace con el módulo django.db.connection.

About

proyecto de para saber como funcionan las consultas del orm de django

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages