sql >> Database >  >> RDS >> PostgreSQL

Hoe u met sqlalchemy dynamisch kunt binden aan de database-engine per verzoek

Het binden van globale objecten (mappers, metadata) aan een gebruikersspecifieke verbinding is geen goede manier. Evenals het gebruik van scoped sessie. Ik stel voor om voor elk verzoek een nieuwe sessie te maken en deze te configureren om gebruikersspecifieke verbindingen te gebruiken. In het volgende voorbeeld wordt ervan uitgegaan dat u afzonderlijke metagegevensobjecten gebruikt voor elke database:

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)()


  1. hoe de volledige resultatenset van SSMS te krijgen

  2. Risico bij gebruik van dynamisch geheugen binnen Hyper-V

  3. Optimalisatiedrempels - Gegevens groeperen en aggregeren, deel 2

  4. Wanneer moet ik PL/SQL BEGIN...END-blokken nesten?