SQLAlchimie
La boîte à outils Python SQL et le mappeur relationnel d'objets
Introduction
SQLAlchemy est la boîte à outils Python SQL et le mappeur relationnel objet qui offre aux développeurs d'applications toute la puissance et la flexibilité de SQL. SQLAlchemy fournit une suite complète de modèles de persistance bien connus au niveau de l'entreprise, conçus pour un accès efficace et performant aux bases de données, adaptés dans un langage de domaine simple et pythonique.
Les principales fonctionnalités de SQLAlchemy incluent :
- Un ORM de force industrielle, construit à partir du noyau sur la carte d'identité, l'unité de travail et les modèles de mappeur de données. Ces modèles permettent une persistance transparente des objets à l'aide d'un système de configuration déclaratif. Les modèles de domaine peuvent être construits et manipulés naturellement, et les modifications sont automatiquement synchronisées avec la transaction en cours.
- Un système de requêtes orienté relationnel, exposant explicitement toute la gamme des capacités de SQL, y compris les jointures, les sous-requêtes, la corrélation et presque tout le reste, en termes de modèle objet. L'écriture de requêtes avec l'ORM utilise les mêmes techniques de composition relationnelle que celles que vous utilisez lors de l'écriture de SQL. Bien que vous puissiez passer au SQL littéral à tout moment, cela n’est pratiquement jamais nécessaire.
- Un système complet et flexible de chargement rapide des collections et objets associés. Les collections sont mises en cache au sein d'une session et peuvent être chargées lors d'un accès individuel, en une seule fois à l'aide de jointures, ou par requête par collection sur l'ensemble des résultats.
- Un système de construction Core SQL et une couche d'interaction DBAPI. Le SQLAlchemy Core est distinct de l'ORM et constitue une couche d'abstraction de base de données complète à part entière. Il comprend un langage d'expression SQL extensible basé sur Python, des métadonnées de schéma, un regroupement de connexions, une coercition de type et des types personnalisés.
- Toutes les contraintes de clé primaire et étrangère sont supposées être composites et naturelles. Les clés primaires entières de substitution sont bien sûr toujours la norme, mais SQLAlchemy n'assume ni ne code en dur ce modèle.
- Introspection et génération de bases de données. Les schémas de base de données peuvent être « reflétés » en une seule étape dans des structures Python représentant les métadonnées de la base de données ; ces mêmes structures peuvent ensuite générer des instructions CREATE directement - le tout dans le Core, indépendamment de l'ORM.
La philosophie de SQLAlchemy :
- Les bases de données SQL se comportent de moins en moins comme des collections d'objets, à mesure que la taille et les performances deviennent importantes ; Les collections d'objets se comportent de moins en moins comme des tableaux et des lignes, à mesure que l'abstraction commence à avoir de l'importance. SQLAlchemy vise à prendre en compte ces deux principes.
- Un ORM n'a pas besoin de cacher le "R". Une base de données relationnelle fournit des fonctionnalités riches basées sur des ensembles qui doivent être entièrement exposées. L'ORM de SQLAlchemy fournit un ensemble ouvert de modèles qui permettent à un développeur de construire une couche de médiation personnalisée entre un modèle de domaine et un schéma relationnel, transformant ainsi le problème dit de « l'impédance relationnelle des objets » en un souvenir lointain.
- Dans tous les cas, le développeur prend toutes les décisions concernant la conception, la structure et les conventions de dénomination du modèle objet ainsi que du schéma relationnel. SQLAlchemy fournit uniquement les moyens d'automatiser l'exécution de ces décisions.
- Avec SQLAlchemy, "l'ORM a généré une mauvaise requête" n'existe pas - vous conservez un contrôle total sur la structure des requêtes, y compris la manière dont les jointures sont organisées, la manière dont les sous-requêtes et la corrélation sont utilisées, les colonnes demandées. Tout ce que fait SQLAlchemy est en fin de compte le résultat d'une décision initiée par le développeur.
- N'utilisez pas d'ORM si le problème n'en a pas besoin. SQLAlchemy se compose d'un composant Core et d'un composant ORM séparé. Le Core offre un langage d'expression SQL complet qui permet la construction pythonique de constructions SQL qui s'affichent directement sous forme de chaînes SQL pour une base de données cible, renvoyant des ensembles de résultats qui sont essentiellement des curseurs DBAPI améliorés.
- Les transactions devraient être la norme. Avec l'ORM de SQLAlchemy, rien n'est stocké de manière permanente tant que commit() n'est pas appelé. SQLAlchemy encourage les applications à créer un moyen cohérent de délimiter le début et la fin d'une série d'opérations.
- Ne restituez jamais une valeur littérale dans une instruction SQL. Les paramètres liés sont utilisés dans la plus grande mesure possible, permettant aux optimiseurs de requêtes de mettre en cache efficacement les plans de requête et de faire des attaques par injection SQL un problème.
Documentation
La dernière documentation est à l'adresse :
https://www.sqlalchemy.org/docs/
Installation/Exigences
La documentation complète pour l’installation se trouve sur Installation.
Obtenir de l'aide / Développement / Rapport de bugs
Veuillez vous référer au Guide de la communauté SQLAlchemy.
Code de conduite
Avant tout, SQLAlchemy accorde une grande importance à une communication polie, réfléchie et constructive entre les utilisateurs et les développeurs. Veuillez consulter notre code de conduite actuel sur Code de conduite.
Licence
SQLAlchemy est distribué sous licence MIT.