Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Ao me conectar a vários bancos de dados, preciso de vários objetos SQLAlchemy Metadata, Base ou Session?


A resposta curta é que é mais fácil ter instâncias separadas de todos eles para ambos os bancos de dados. É possível criar um único roteamento sessão , mas tem suas ressalvas.

O criador de sessões e Sessão também suporta passando vários liga como argumento e confirmações de duas fases , que também pode permitir o uso de uma única sessão com vários bancos de dados. Por sorte, os 2 bancos de dados que suportam commits de 2 fases são PostgreSQL e MySQL.

Sobre a relação entre Base e metadados :

Base é uma classe base que tem uma metaclasse usada para criar declarativamente Tabela objetos a partir de informações fornecidas na própria classe e suas subclasses. Todas as Tabela objetos declarados implicitamente por subclasses de Base compartilhará o mesmo MetaData .

Você pode fornecer metadados como argumento ao criar uma nova base declarativa e, assim, compartilhá-la entre várias Base s, mas no seu caso não é útil.

MetaData é uma coleção de Tabela objetos e suas construções de esquema associadas. Ele também pode manter uma ligação a um Engine ou Sessão .

Resumindo, você pode ter Tabela se MetaDados sem uma Base , mas uma Base requer MetaData funcionar.