2017-09-28 3 views
2

J'ai remarqué que de nombreux didacticiels SQLAlchemy utilisent relationship() pour "connecter" plusieurs tables ensemble, que leur relation soit un à un, un à plusieurs ou plusieurs à plusieurs. Cependant, lorsque vous utilisez SQL brut, vous n'êtes pas en mesure de définir les relations entre les tables explicitement, autant que je sache.Est-il nécessaire d'utiliser `relation()` dans SQLAlchemy?

Dans quels cas relationship() est-il requis et non requis? Pourquoi devons-nous définir explicitement la relation entre les tables dans SQLAlchemy?

Répondre

3

En SQL, les tables sont liées les uns aux autres via clés étrangères. Dans un ORM, les modèles sont liés les uns aux autres via relations. Vous n'êtes pas obligé d'utiliser des relations, tout comme vous n'êtes pas obligé d'utiliser des modèles (c'est-à-dire l'ORM). Les classes mappées vous permettent de travailler avec les tables comme s'il s'agissait d'objets en mémoire; dans le même sens, les relations vous permettent de travailler avec des clés étrangères comme si elles étaient des références en mémoire.

Vous souhaitez configurer des relations dans le même but que la configuration de modèles: la commodité. Pour cette raison, les deux vont de pair. Il est rare de voir des modèles avec des clés étrangères brutes mais pas de relations.