web-dev-qa-db-fra.com

SQLAlchemy (ORM) vs requêtes SQL brutes

au cours du dernier mois, je me suis consacré à l'étude de Flask, un framework python pour la construction d'applications web.

Suite aux différents tutoriels que j'ai trouvés en ligne, j'ai découvert SQLAlchemy.

Pour être honnête, je le trouve compliqué et pas vraiment utile car j'ai une assez bonne connaissance du langage SQL.

Ce que je veux comprendre, c'est s'il y a un gain majeur à utiliser ORM comme SQLAlchemy qui me manque (peut-être un problème de sécurité dans l'utilisation de SQL pur que je ne connais pas?).

En outre, j'apprécierais si vous pouviez me conseiller sur la meilleure bibliothèque python pour travailler avec des requêtes SQL pures).

14
a.costa

Il y a beaucoup de. Les plus grands avantages que j'observe d'utiliser ORM au lieu des requêtes SQL brutes sont:

  1. Robustesse : vous n'avez pas à vous soucier des erreurs de syntaxe que vous pourriez commettre lors de l'écriture de la requête SQL pour différentes sources Databse. En fait, vous n'avez pas besoin de connaître la syntaxe de toutes les sources DB. La même requête ORM fonctionne pour tous. Que ce soit un moteur basé sur SQL comme MySQL, ou un moteur basé sur NoSQL comme MongoDB
  2. Évolutivité : en cas de changement des besoins de l'entreprise ou du type/de la quantité de données que vous traitez. Il est très courant de changer le moteur de base de données. Vous n'avez pas à vous soucier de la rupture de la requête, car ORM gère cela. La seule condition est que votre ORM doit prendre en charge cette source de données.
  3. Sécurité : Vous n'avez pas à vous soucier des failles de sécurité dues à Injections SQL etc comme l'ORM agit déjà comme un bouclier protecteur contre eux
  4. Confiance : Il y a énormément d'esprits intelligents dans le monde qui ont travaillé à la création de l'ORM en prenant soin des scénarios et des problèmes auxquels ils ont été confrontés au fil du temps. En tant que personne seule, je peux en manquer de nombreux aspects. Par conséquent, l'utilisation d'ORM est moins sujette aux problèmes inattendus auxquels nous pouvons être confrontés. (Cela ne signifie pas que les ORM sont parfaits, mais ceux-ci sont moins sujets aux erreurs)
  5. Heure : Avec les ORM, vous bénéficiez de la prise en charge d'un grand nombre de bibliothèques open source. Par exemple pour migration de données, portail web pour vérifier les données, sérialiseurs de données, etc. Ainsi, vous pouvez économiser votre temps pour quelque chose de beaucoup plus important.

Même s'ils ont également des effets secondaires:

  1. Vitesse : les ORM sont plus lents car ils agissent comme un middleware entre votre code et l'exécution de la requête. En fait, les ORM créent en interne une même requête brute pour obtenir le résultat souhaité,
  2. Portée : ORM peut restreindre la portée de votre implémentation. Comme je l'ai mentionné, ils agissent comme un middleware. Il est possible que votre moteur de base de données prenne en charge certaines fonctionnalités mais qui n'ont pas été implémentées dans l'ORM. Mais dans un tel scénario, vous avez toujours la possibilité d'écrire une requête SQL brute pour obtenir le résultat souhaité.

J'aime les ORM en raison des avantages que j'ai mentionnés.

23
Moinuddin Quadri