sql >> Databasteknik >  >> RDS >> PostgreSQL

Med sqlalchemy hur man dynamiskt binder till databasmotorn per begäran

Att binda globala objekt (mappare, metadata) till användarspecifik anslutning är inte bra. Samt att använda scoped session. Jag föreslår att du skapar en ny session för varje begäran och konfigurerar den för att använda användarspecifika anslutningar. Följande exempel förutsätter att du använder separata metadataobjekt för varje databas:

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. Viktiga saker att övervaka i PostgreSQL - Analysera din arbetsbelastning

  2. PostgreSQL – Hur man eliminerar upprepade värden

  3. Infoga en bild från Oracle i SQL Server

  4. Användarkontohantering, roller, behörigheter, autentisering PHP och MySQL - Del 6