La risposta breve è che è più semplice avere istanze separate di tutte per entrambi i database. È possibile creare un singolo routing sessione , ma ha i suoi avvertimenti.
Il sessionmaker
e Session
supporta anche il passaggio di più lega come argomento
e commit a 2 fasi
, che può consentire anche l'utilizzo di una singola sessione con più database. Per fortuna, i 2 database che supportano i commit in 2 fasi sono PostgreSQL e MySQL.
Sulla relazione tra Base
e metadata
:
Base
è una classe base che ha una metaclasse usata per creare dichiarativamente Table
oggetti dalle informazioni fornite nella classe stessa e nelle sue sottoclassi. Tutti Table
oggetti dichiarati implicitamente dalle sottoclassi di Base
condividerà gli stessi MetaData
.
Puoi fornire metadati come argomento durante la creazione di una nuova base dichiarativa e quindi condividerla tra più Base
s, ma nel tuo caso non è utile.
MetaData
è una raccolta di Table
oggetti e i loro costrutti di schemi associati. Può anche contenere un collegamento a un Engine
o Session
.
In breve, puoi avere Table
se MetaData
senza una Base
, ma una Base
richiede MetaData
per funzionare.