我正在使用mysql。但是,我能够找到使用sqlalchemy orm但不使用expression语言的方法来实现这一点,所以我特别寻找基于核心/表达式语言的解决方案。数据库位于同一台服务器上
我的连接是这样的:
connection = engine.connect().execution_options(
schema_translate_map = {current_database_schema: new_database_schema})
engine_1=create_engine("mysql+mysqldb://root:user@*******/DB_1")
engine_2=create_engine("mysql+mysqldb://root:user@*******/DB_2",pool_size=5)
metadata_1=MetaData(engine_1)
metadata_2=MetaData(engine_2)
metadata.reflect(bind=engine_1)
metadata.reflect(bind=engine_2)
table_1=metadata_1.tables['table_1']
table_2=metadata_2.tables['table_2']
query=select([table_1.c.name,table_2.c.name]).select_from(join(table_2,table_1.c.id==table_2.c.id,'left')
result=connection.execute(query).fetchall()
但是,当我尝试连接来自不同数据库的表时,显然会抛出一个错误,因为连接属于其中一个数据库。我没有试过别的方法,因为我找不到解决这个问题的方法。提出这个问题的另一种方法(也许)是“如何使用sqlalchemy core中的单个连接连接到多个数据库”。
1条答案
按热度按时间czq61nw11#
将解决方案从这里应用到核心只能创建一个
Engine
连接到服务器但不默认连接到一个或另一个数据库的对象:然后用一个
MetaData
示例反映每个架构的内容:您还可以使用其中一个数据库作为“默认”并将其传递到url中。在这种情况下,您将像往常一样反映来自该数据库的表,并传递
schema=
仅当反射其他数据库时才使用关键字参数。使用创建的引擎执行查询: