Raw Sql vs SqlAlchemy cuando Django ORM no es suficiente

7

En un proyecto de django, si surge una situación en la que Django ORM no puede ejecutar algunas consultas complejas, existen 2 opciones:

  1. Usar consultas de Sql sin formato

  2. Usa SqlAlchemy

Quiero saber si existen algunas reglas, como algunas ventajas y desventajas, que me pueden guiar para elegir una de las 2 opciones anteriores. ¿O depende totalmente de lo que nos gusta?

    
pregunta codecool 24.09.2011 - 14:24

1 respuesta

9

ORM

  • Pro Se puede utilizar en diferentes DBMS sin personalización de código.
  • Pro Facilita la integración de código / DB.
  • Pro Comprobación de tipos adicional de ORM / definiciones de tabla.
  • Pro Facilita las migraciones de db.
  • Pro Esencialmente un DSL para la integración de DB.
  • Con Componente adicional para entender (debe comprender cómo el ORM creará el SQL)
  • Con Cualquier personalización de SQL elimina la facilidad de uso en diferentes DBMS.

Raw SQL

  • Pro Sabes que se está utilizando el SQL porque está en el código.
  • Pro Más control sobre el SQL y la integración.
  • Pro Menos complejidad (sin ORM).
  • Con vinculado a un DBMS de SQL.
  • Con Integración manual de código / DB.

El problema de la complejidad

Estoy seguro de que me van a dingear por esto, PERO.

A diferencia de muchos de sus defensores, NO creo que los ORM liberen a los desarrolladores de la comprensión de SQL. Aún tiene que entender SQL porque terminará lidiando con el SQL que crea su ORM. Y aquí es por qué:

  • Las declaraciones de SQL suelen ser una de las primeras cosas que necesitan ajustes de rendimiento en un proyecto determinado.
  • Los ORM todavía son jóvenes. No tengo conocimiento de implementar un analizador de SQL real, lo que significa que, aparte de las declaraciones triviales, el SQL construido es a menudo ineficiente y, en algunos casos, simplemente incorrecto.

Esto no significa que no debas usar un ORM. Todavía pueden reducir la cantidad de código que tienes que escribir. Pero debe comprender que es posible que no obtenga todos los beneficios que cree que obtendrá.

    
respondido por el dietbuddha 24.09.2011 - 18:45

Lea otras preguntas en las etiquetas