我在多个数据库上使用 sqlalchemy 和 elixir 。目前,多个会话一切正常——一个会话绑定到不同的数据库。但是,在某些情况下,我想使用一个会话来查询另一个数据库(这是为了支持具有不同复制数据库的多个服务器)。
问题是,当对一个会话进行查询时,表名没有使用正确的数据库名称进行限定,并且我不知道如何告诉查询要使用哪个数据库名称作为前缀。有什么办法可以做到这一点吗?
Oracle 作为数据库遇到了类似的问题。数据库实例之间的架构名称不同,因此希望这与您的情况类似。
解决此问题的方法是首先向数据库发起一个简单的查询以确定架构对象的所有者:
SELECT owner FROM ALL_OBJECTS WHERE object_name = :obj_name AND object_type = :obj_type
然后使用生成的标量作为反射表上架构参数的值:
mytable = Table(name='my_table_name',
metadata=my_bound_metadata,
autoload=True,
schema=schema_owner)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)