Mysql
 sql >> Base de données >  >> RDS >> Mysql

Lors de la connexion à plusieurs bases de données, ai-je besoin de plusieurs objets SQLAlchemy Metadata, Base ou Session ?

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.