Das Binden globaler Objekte (Mapper, Metadaten) an benutzerspezifische Verbindungen ist kein guter Weg. Sowie mit Scoped Session. Ich schlage vor, für jede Anfrage eine neue Sitzung zu erstellen und sie so zu konfigurieren, dass sie benutzerspezifische Verbindungen verwendet. Das folgende Beispiel geht davon aus, dass Sie separate Metadatenobjekte für jede Datenbank verwenden:
binds = {}
finance_engine = create_engine(url1)
binds.update(dict.fromkeys(finance_metadata.sorted_tables, finance_engine))
# The following line is required when mappings to joint tables are used (e.g.
# in joint table inheritance) due to bug (or misfeature) in SQLAlchemy 0.5.4.
# This issue might be fixed in newer versions.
binds.update(dict.fromkeys([Employee, Customer, Invoice], finance_engine))
staff_engine = create_engine(url2)
binds.update(dict.fromkeys(staff_metadata.sorted_tables, staff_engine))
# See comment above.
binds.update(dict.fromkeys([Project, Hour], staff_engine))
session = sessionmaker(binds=binds)()