Как использовать SQLAlchemy для беспрепятственного доступа к нескольким базам данных?
Допустим, я создал систему баз данных продуктов для разных отделов моей компании. Каждый отдел имеет свой собственный экземпляр PostgreSQL-databse по различным причинам. Схемы баз данных одинаковы, однако данных в них нет. Для каждой из этих систем существует приложение Python, которое выполняет некоторую бизнес-логику (не имеет значения). Каждое приложение Python обращается к своим и только к своим базам данных через SQLAlchemy.
Я хочу создать Supervisior-System, которая может получить доступ ко всем данным во всех этих базах данных (сквозная функциональность).
Вот пример того, о чем я думаю:
![enter image description here]()
Могу ли я сделать это с помощью SQLAlchemy? Если да, то каков наилучший подход для такого рода проблем?
Ответы
Ответ 1
Конечно, вы можете сделать это с помощью SQLAlchemy.
Все, что вам нужно сделать, это создать разные механизмы подключения, каждый со своим собственным создателем сеанса. Ничто в SQLAlchemy не ограничивает вас только одной базой данных за раз.
engines = []
sessions = []
for dbconninfo in databases:
engine = create_engine(dbconninfo)
engines.append(engine)
sessions.append(sessionmaker(bind=engine)())
Вы можете использовать каждый сеанс для запуска запросов, объекты результата присоединяются к сеансу, который их создал, чтобы изменения возвращались к правильной базе данных. Подробно изучите документацию по сеансу, чтобы узнать, что произойдет, если вы хотите объединить объект из одного сеанса в другой, например.