sql >> Database teknologi >  >> RDS >> PostgreSQL

Med sqlalchemy hvordan man dynamisk binder til databasemotoren på en per-anmodningsbasis

Det er ikke en god måde at binde globale objekter (kortlæggere, metadata) til brugerspecifik forbindelse. Samt at bruge scoped session. Jeg foreslår at oprette en ny session for hver anmodning og konfigurere den til at bruge brugerspecifikke forbindelser. Følgende eksempel antager, at du bruger separate metadataobjekter til hver 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. Sådan tilføjer du et sidehoved og en sidefod til en formular i Microsoft Access

  2. fremad cross edition triggere i R12.2

  3. Sådan fungerer SEC_TO_TIME() i MariaDB

  4. SQL Server COALESCE() Forklaret