L’équipe derrière SQLAlchemy récemment, l’outil SQL open source et un mapping objet-relationnel écrit en Python, a publié la sortie de la nouvelle version 2.0.
Pour ceux qui ne connaissent pas SQLAlchemy, sachez que est une boîte à outils python sql et un mappeur relationnel d’objetsfournit un ensemble complet de modèles de persistance bien connus conçus pour un accès efficace et hautes performances aux bases de données, adaptés dans un langage de domaine Pythonic simple.
Nouvelles fonctionnalités majeures dans SQLAlchemy 2.0
La nouvelle version 2.0 de SQLAlchemy arrive avec des changements d’API significatifs par rapport à la série 1.4Avec cela, il est important de noter que les applications qui fonctionnent avec la suite 1.x et qui n’ont pas suivi le processus de migration doivent s’assurer que les exigences sont définies pour conserver l’ensemble principal souhaité de versions de SQLAlchemy en place.
SQLAlchemy 2.0 intègre de nouvelles syntaxes ORM compatibles avec pep-484 pas de plugin : le style déclaratif ORM de la configuration du mappeur a maintenant un tout nouveau look, empruntant fortement à des systèmes tels que les classes de données de Python et SQLModel pour fournir des instructions ORM basées sur des annotations, en utilisant l’interprétation d’exécution des annotations pep-484 pour produire des classes mappées qui sont entièrement typés et compatibles avec tout type de testeur ou IDE.
Un autre des changements qui se démarque dans cette nouvelle version de SQLAlchemy 2.0 c’est que introduit la prise en charge d’une classe assignée déclarative annoté pouvant être généré directement en tant que classe de données Python ; cela se traduit par une classe mappée ORM déclarée comme n’importe quelle autre classe, avec des méthodes de classe de données générées automatiquement. Cette nouvelle approche est considérablement améliorée par rapport aux approches “hybrides” provisoires introduites dans SQLAlchemy 1.4.
En plus de cela, nous pouvons également constater qu’il présente des optimisations dans architecture de réflexion de schéma qui est fondamentalement presque nouveau, puisque, maintenant opérations qui reflètent des schémas entiers à la foistelles que MetaData.reflect et les opérations nouvellement ajoutées à l’échelle du schéma avec la construction inspec, ils sont maintenant basés sur une base qui suppose des opérations qui fonctionnent sur des centaines ou des milliers de tables à la foisau lieu d’une table à la fois.
La nouvelle architecture est activée pour les backends PostgreSQL et Oracle, qui étaient les deux backends avec les plus gros problèmes de performances pour les grands schémas, où il donne une amélioration de 250 % pour PostgreSQL et une amélioration de 900 % pour Oracle. Le dialecte SQL Server est la prochaine cible de la nouvelle architecture. Tout dialecte tiers peut opter pour le nouveau système “plusieurs tables à la fois” ou rester sur l’ancienne approche “table à la fois”, qui reste entièrement prise en charge sans modifications.
D’autre part, une toute nouvelle approche de l’INSERT est proposéeentièrement intégré à ORM, qui est généralement un ordre de grandeur plus rapide sur la plupart des backends – la plupart des bases de données et Les pilotes pris en charge par SQLAlchemy ont maintenant ajouté ou amélioré leur prise en charge de la syntaxe INSERT DE RETOUR.
La nouvelle version de SQLAlchemy 2.0 en a profité pour prendre en charge et améliorer le support RETURNING pPour tous vos backends, à la seule exception de MySQL (MySQL uniquement ; MariaDB prend en charge les charges RETURNING).
Une partie de cette amélioration est la possibilité d’insérer des milliers de lignes dans une seule instruction batch qui renvoie également un ensemble complet de valeurs générées par le serveur nécessaires à l’ORM, ce qui n’a jamais été possible auparavant, à la seule exception d’une implémentation provisoire. . qui était basé sur le pilote psycopg2.
En version 2.0 travail a été fait pour optimiser INSERT pour tous les backends, de sorte que des milliers d’objets ORM avec ou sans clés primaires et cette capacité est entièrement intégrée dans l’ORM pour toutes les opérations INSERT, à la fois pour les opérations ORM d’unité de travail “normales” et les approches “en masse”, qui ont également été récemment révisées dans la version 2.0.
Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails sur le lien suivant.
Il convient de noter que la nouvelle version de SQLAlchemy 2.0 est une version suffisamment importante pour avoir deux guides de migration : Le guide de migration principal explique comment assurer la compatibilité de l’API pour qu’une application fonctionne sur SQLAlchemy 1.4 ou 2.0.