Sommaire

Django et SQLAlchemy

Comme il n’est pas possible de présenter tous les ORM possibles et envisageables, nous allons uniquement évoquer SQLAlchemy. Cela pour deux raisons : d’une part SQLAlchemy est considéré comme le meilleur ORM Python et, d’autre part, il existe quelques tentatives permettant de marier SQLAlchemy avec Django.

Pour faire simple, SQLAlchemy est un ’toolkit’ Python fait pour manipuler des bases de données avec plus de contrôle sur les manipulations que l’on effectue et également plus de fonctionnalités. L’ORM de Django est parfaitement adapté à Django et au développement web, il permet de modéliser rapidement nos données. C’est une distinction importante : l’interface de l’ORM Django est centrée sur le modèle de données de l’application, tandis que l’interface de SQLAlchemy se concentre sur la base sous-jacente, et l’efficacité du stockage des données. Avec Django votre application passe en premier.

Exemple :

Django :

Salles.objects.filter(batiment__numero=107)

SQLAlchemy :

session.query(Salles).join(Salles, Batiment).filter(Batiment.numero==107)

SQLA va permettre de réaliser des jointures complexes, des sous-requêtes et des agrégations complexes (Windows aggregates). Si l’on souhaite réaliser tout cela avec Django, il faudra faire appel à des requêtes en SQL pur.

Essayons donc maintenant ...