SQLAlchemy (ORM) frente a las consultas de SQL sin formato

durante el último mes me he dedicado al estudio de Flask, un framework de Python para crear aplicaciones web.

Siguiendo diferentes tutoriales que he encontrado en línea, he descubierto SQLAlchemy.

Para ser honesto, lo encuentro complicado y no es realmente útil ya que tengo un buen conocimiento del lenguaje SQL.

Lo que quiero entender es si hay alguna ganancia importante en el uso de ORM como SQLAlchemy que me esté faltando (tal vez algún problema de seguridad en el uso de SQL puro que no conozca?).

Además, agradecería que me aconsejara cuál es la mejor biblioteca de Python para trabajar con consultas de SQL puro.

Hay muchos. Las mayores ventajas que veo de usar ORM en lugar de consultas de SQL sin procesar son:

  1. Robustez : no debe preocuparse por los errores de syntax que puede cometer al escribir la consulta SQL para diferentes fonts Databse. De hecho, no es necesario que conozca la syntax de todas las fonts DB. La misma consulta de ORM funciona para todos. Ya sea un motor basado en SQL como MySQL o un motor basado en NoSQL como MongoDB
  2. Escalabilidad : con el cambio en los requisitos comerciales, o el tipo / cantidad de datos que está manejando. Es muy común cambiar el motor de la base de datos. No debe preocuparse por la ruptura en la consulta, ya que ORM se encarga de eso. La única condición es que su ORM debe admitir esa fuente de datos.
  3. Seguridad : no debe preocuparse por las infracciones de seguridad debidas a las inyecciones de SQL, etc., ya que el ORM ya actúa como un escudo protector contra ellas.
  4. Confianza : Hay un gran número de mentes inteligentes en todo el mundo que trabajaron en la creación del ORM cuidando los escenarios y los problemas que enfrentaron a lo largo del tiempo. Yo, como una sola persona puede pasar por alto muchos aspectos de ellos. Por lo tanto, el uso de ORM es menos propenso a los problemas inesperados que podríamos enfrentar. (Eso no significa que los ORM sean perfectos, pero son menos propensos a errores)
  5. Tiempo : Con los ORM, obtiene soporte para una gran cantidad de bibliotecas de código abierto. Por ejemplo, para la migración de datos, el portal web para verificar datos, serializadores de datos, etc. Por lo tanto, puede ahorrar su tiempo para algo mucho más importante.

Aunque también tienen algunos efectos secundarios:

  1. Velocidad : los ORM son más lentos ya que actúan como un middleware entre su código y la ejecución de la consulta. De hecho, los ORM crean internamente una misma consulta sin procesar para obtener el resultado deseado,
  2. Alcance : ORM puede restringir el scope de su implementación. Como mencioné, actúan como un middleware. Existe la posibilidad de que su motor de base de datos admita alguna funcionalidad pero que no se haya implementado en el ORM. Pero en este tipo de escenario, siempre tiene la opción de escribir consultas SQL sin procesar para obtener el resultado deseado.

Me gustan los ORM debido a las ventajas que mencioné.