La réponse courte est qu'il est plus facile d'avoir des instances distinctes de tous pour les deux bases de données. Il est possible de créer un seul routage séance , mais il a ses mises en garde.
Le sessionmaker
et Session
prend également en charge transmettre plusieurs lie comme argument
et commits en 2 phases
, qui peut également permettre d'utiliser une seule session avec plusieurs bases de données. Par chance, les 2 bases de données qui prennent en charge les commits en 2 phases sont PostgreSQL et MySQL.
À propos de la relation entre Base
et metadata
:
Base
est une classe de base qui a une métaclasse utilisée pour créer de manière déclarative Table
objets à partir des informations fournies dans la classe elle-même et ses sous-classes. Tous les Table
objets implicitement déclarés par les sous-classes de Base
partageront les mêmes MetaData
.
Vous pouvez fournir des métadonnées en argument lors de la création d'une nouvelle base déclarative et ainsi la partager entre plusieurs Base
s, mais dans votre cas, ce n'est pas utile.
MetaData
est une collection de Table
objets et leurs constructions de schéma associées. Il peut également contenir une liaison à un Engine
ou Session
.
En bref, vous pouvez avoir Table
s et MetaData
sans Base
, mais une Base
nécessite des metadata
pour fonctionner.