Table des matières

, , , , ,

Flask-SQLAlchemy : Mise en œuvre d'une relation many-to-many

:TODO:

Suppression des enregistrements orphelins dans une association many-to-many

Un cas typique est la gestion des étiquettes (tags) ou des mots-clés (keywords).

Dans cet exemple on souhaite pouvoir associer des mots-clés à des jeux :

On définit bien une association plusieurs-à-plusieurs mais on ne souhaite pas conserver dans notre base des mots-clés seuls. Lorsqu'un jeu est supprimé, si parmi ses mots-clés certains ne sont plus utilisés, alors on veut les supprimer également.

Ce comportement de suppression des enregistrements orphelins est bien pris en charge par l'ORM SQLAlchemy sur des associations de type one-to-many mais sa mise en œuvre sur des associations de type many-to-many est un peu plus délicate.

Heureusement le package Python SQLAlchemy-Utils permet de mettre en œuvre se comportement via sa fonction auto_delete_orphans.

Pour pouvoir utiliser la fonction auto_delete_orphans du package les associations définies via la fonction relationship doivent utiliser l'option historique backref

Références

Supprimer les enregistrements orphelins