У меня есть две базы данных на сервере postgres, названные диспетчерской и драйверами, и я настроил это так:
engines = { 'drivers':create_engine('postgres://postgres:admin@localhost:5432/drivers'), 'dispatch':create_engine('postgres://postgres:admin@localhost:5432/dispatch')
}
а также у меня есть класс routingSession, который на основе объекта, переданного во время выполнения запроса, выполняет запрос в конкретной базе данных и извлекает результат
class RoutingSession(Session):
def get_bind(self, mapper=None, clause=None):
if mapper and issubclass(mapper.class_, drivers):
return engines['drivers']
elif mapper and issubclass(mapper.class_, dispatch):
return engines['dispatch']
так что теперь я могу разместить запрос к таблицам базы данных следующим образом:
Session = sessionmaker(class_=RoutingSession)
session=Session()
res=session.query(drivers).all()
но проблема, с которой я сталкиваюсь, заключается в том, что мне нужно объединить результаты между двумя моими таблицами, то есть драйверами и диспетчеризацией, что я могу сделать при работе с одной и той же базой данных и несколькими схемами:
result=session.query(drivers,dispatch).filter(drivers.id==dispatch.id).all()
, но не удается, когда я пытаюсь сделать это на разных базах данных. Пожалуйста, предложите, как мне этого добиться.