sql >> Base de Datos >  >> RDS >> Mysql

Al conectarme a varias bases de datos, ¿necesito varios objetos SQLAlchemy Metadata, Base o Session?

La respuesta corta es que es más fácil tener instancias separadas de todas ellas para ambas bases de datos. Es posible crear un único enrutamiento sesión , pero tiene sus salvedades.

El sessionmaker y Session también admite pasando múltiples atar como argumento y compromisos de 2 fases , que también puede permitir el uso de una sola sesión con múltiples bases de datos. Por suerte, las 2 bases de datos que admiten confirmaciones de 2 fases son PostgreSQL y MySQL.

Sobre la relación entre Base y metadata :

Base es una clase base que tiene una metaclase que se usa para crear declarativamente Table objetos a partir de la información proporcionada en la propia clase y sus subclases. Todo Table objetos declarados implícitamente por subclases de Base compartirá los mismos MetaData .

Puede proporcionar metadatos como argumento al crear una nueva base declarativa y así compartirla entre múltiples Base s, pero en tu caso no es útil.

MetaData es una colección de Table objetos y sus construcciones de esquema asociadas. También puede contener un enlace a un Engine o Session .

En resumen, puede tener Table y MetaData sin una Base , pero una Base requiere MetaData para funcionar.