Применяя решение из здесь только к Core, вы можете создать один Engine
объект, который подключается к вашему серверу, но без использования одной или другой базы данных по умолчанию:
engine = create_engine("mysql+mysqldb://root:user@*******/")
и затем использование одного экземпляра MetaData
отражает содержимое каждой схемы:
metadata = MetaData(engine)
metadata.reflect(schema='DB_1')
metadata.reflect(schema='DB_2')
# Note: use the fully qualified names as keys
table_1 = metadata.tables['DB_1.table_1']
table_2 = metadata.tables['DB_2.table_2']
Вы также можете использовать одну из баз данных в качестве «по умолчанию» и передать ее в URL. В этом случае вы, как обычно, будете отображать таблицы из этой базы данных и передавать аргумент ключевого слова schema=
только при отражении другой базы данных.
Использовать созданный движок для выполнения запроса:
query = select([table_1.c.name, table_2.c.name]).\
select_from(outerjoin(table1, table_2, table_1.c.id == table_2.c.id))
with engine.begin() as connection:
result = connection.execute(query).fetchall()