Lors du développement d’une application Python, j’ai eu besoin de récupérer des données réparties dans deux tables liées en une seule requête. C’est ce qu’on appelle réaliser une jointure en SQL.
Voici ce que j’ai appris sur les jointures avec SQLAlchemy.
Le SQL
Je connaissais le code SQL que je devais exécuter.
|
|
Mais comment cela se matérialise-t-il avec SQLAlchemy ?
La requête écrite en Python
L’instruction SQLAlchemy s’écrit de la manière suivante :
|
|
J’aimerais ajouter quelques commentaires :
session.query(EventEntity, EventJournalEntity)indique à SQLAlchemy que vous voulez des colonnes des deux tables — le résultat sera une liste de tuples plutôt qu’une liste plate d’une entité..join(EventJournalEntity, EventEntity.event_id == EventJournalEntity.event_id)spécifie la table cible et la conditionONexplicitement, ce qui évite toute ambiguïté lorsque la relation n’est pas préconfigurée dans le modèle.- Vous pouvez enchaîner
all(),.filter(),.order_by(), et d’autres clauses après.join()comme vous le feriez normalement pour une requête sur une seule entité.
J’aborderai probablement d’autres scénarios plus complexes lorsque je les rencontrerai.
Suivez-moi !
Merci d’avoir lu cet article. Assurez-vous de me suivre sur X, de vous abonner à ma publication Substack et d’ajouter mon blog à vos favoris pour ne pas manquer les prochains articles.
Photo de Kindel Media.