PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dzięki sqlalchemy, jak dynamicznie łączyć się z silnikiem bazy danych na podstawie żądania

Wiązanie obiektów globalnych (maperów, metadanych) z połączeniem specyficznym dla użytkownika nie jest dobrym sposobem. Jak również przy użyciu sesji w określonym zakresie. Proponuję utworzyć nową sesję dla każdego żądania i skonfigurować ją tak, aby używała połączeń specyficznych dla użytkownika. Poniższy przykład zakłada, że ​​używasz oddzielnych obiektów metadanych dla każdej bazy danych:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Powolne proste zapytanie o aktualizację w bazie danych PostgreSQL z 3 milionami wierszy

  2. Jak zaokrąglić do najbliższych X minut w PL/pgSQL?

  3. W pełni zarządzany hosting PostgreSQL na platformach AWS i Azure uruchamia się na czas dla starszych migracji

  4. Czy mogę dodać ograniczenie UNIQUE do tabeli PostgreSQL po jej utworzeniu?

  5. PostgreSQL:różnica wydajności NIE W porównaniu z WYJĄTKIEM (edytowane nr 2)