Question

Lors de mon concert actuel, nous utilisons iBATIS via Java pour créer CRUD nos bases de données. J'aime les qualités abstraites de l'outil, en particulier lorsque vous travaillez avec des bases de données héritées, car il ne vous impose pas sa propre syntaxe.

Je recherche un analogue Python dans cette bibliothèque , car le site Web ne propose que des versions Java / .NET / Ruby. Je ne veux pas avoir à passer à Jython si je n'en ai pas besoin.

Existe-t-il d'autres projets similaires à la fonctionnalité iBATIS pour Python?

Était-ce utile?

La solution

iBatis séquestre le DML SQL (ou les définitions du SQL) dans un fichier XML. Il se concentre spécifiquement sur le mappage entre le code SQL et certains modèles d’objets définis ailleurs.

SQL Alchemy peut le faire, mais ce n’est pas vraiment une solution très complète. Comme iBatis, vous pouvez simplement avoir des définitions de table SQL et un mappage entre les tables et les définitions de classe Python.

Le plus complet est d’avoir une définition de classe qui est aussi la définition de la base de données SQL. Si la définition de classe génère le DDL de table SQL ainsi que le DML de requête et de traitement, le processus est beaucoup plus complet.

Je bascule entre SQLAlchemy et l'ORM de Django. SQLAlchemy peut être utilisé de manière similaire à iBatis. Mais je préfère que la conception des objets soit centrale et que l'implémentation SQL soit déduite des objets par le jeu d'outils.

J'utilise SQLAlchemy pour des projets volumineux, par lots et autonomes. Les charges de base de données, les conversions de schéma, les rapports DW et autres fonctionnent bien. Dans ces projets, l'accent est mis sur la vue relationnelle des données, pas sur le modèle d'objet. Le code SQL généré peut être déplacé, par exemple, dans des procédures stockées PL / SQL.

J'utilise Django pour les applications Web, en exploitant ses fonctionnalités ORM intégrées. Avec un peu de travail, vous pouvez séparer l'ORM Django du reste de l'environnement Django. Vous pouvez définir des paramètres globaux pour lier votre application à une base de données spécifique sans utiliser un module de paramètres séparé.

Django inclut un certain nombre de relations communes (clé étrangère, plusieurs à plusieurs, un à un) pour lesquelles il peut gérer la mise en œuvre SQL. Il génère des définitions de clé et d’index pour la base de données attachée.

Si votre problème est largement orienté objet, la base de données étant utilisée pour la persistance, la couche ORM presque transparente de Django présente des avantages.

Si votre problème est en grande partie relationnel, avec le traitement SQL central, la possibilité de visualiser le code SQL généré dans SQLAlchemy présente des avantages.

Autres conseils

Peut-être que le support d’expression SQLAlchemy est approprié. Consultez la documentation .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top