alter session set current_schema 在全球范围内不起作用

alter session set current_schema not working globally

我正在更改主函数中的模式

db_dwh.cursor.execute("alter session set current_schema = SCHEMA_NAME")

但是当我将这个 db_dwh 对象传递给函数并尝试对 table 执行查询时,我得到 table 没有发现错误, 为此,我必须再次使用以下方式设置架构:

db_dwh.cursor.execute("alter session set current_schema = SCHEMA_NAME")

有什么方法可以在全球范围内只在一个地方设置模式吗?


PS Hadoop 环境中的作业运行。

我希望你的函数有不同的连接 - 我希望你使用的是连接池。

评论有一个解决方案。

这里有一些其他可用的工具。它们可能有用,具体取决于您(或其他读者)的应用程序架构:

    def init_session(connection, requested_tag):
        connection.current_schema = 'ALISON'

    # Create the pool with a session callback
    pool = cx_Oracle.SessionPool(user="whoever", password=userpwd, dsn="orclpdb1", session_callback=init_session)

    # Get a connection from the pool.  It will always have the current schema
    # set to ALISON
    connection = pool.acquire()

    . . .  # Use the connection