【问题标题】:SQLAlchemy Oracle - InvalidRequestError: could not retrieve isolation levelSQLAlchemy Oracle - InvalidRequestError:无法检索隔离级别
【发布时间】:2021-01-21 15:26:14
【问题描述】:

我在通过 SQLAlchemy 连接访问 Oracle 数据库中的表时遇到问题。具体来说,我正在使用 Kedro catalog.load('table_name') 并收到错误消息 Table table_name not found。所以我决定使用这个答案中列出的方法来测试我的连接:How to verify SqlAlchemy engine object

from sqlalchemy import create_engine
engine = create_engine('oracle+cx_oracle://USER:PASSWORD@HOST:PORT/?service_name=SERVICE_NAME')
engine.connect()

错误:InvalidRequestError: could not retrieve isolation level

我已尝试按照documentation 中的说明明确添加隔离级别,如下所示:

engine = create_engine('oracle+cx_oracle://USER:PASSWORD@HOST:PORT/?service_name=SERVICE_NAME', execution_options={'isolation_level': 'AUTOCOMMIT'})

还有这个:

engine.connect().execution_options(isolation_level='AUTOCOMMIT')

还有这个:

connection = engine.connect()
connection = connection.execution_options(
    isolation_level="AUTOCOMMIT"
)

但在所有情况下我都会遇到相同的错误。

【问题讨论】:

  • 确保您拥有最新的 SQL Alchemy。它最近在隔离级别和 Oracle 方面发生了一些变化。
  • 嘿,您看到的错误可能仅发生在 SQLAlchemy 1.3.21 中的 connect() 上。在 1.3.22 中,上面的错误是在内部捕获的,而不是在 connect() 时引发的;只有在显式调用 get_isolation_level() 方法时才能看到它。如果您在 1.3.22 或更高版本中看到此错误,请最好将完整的堆栈跟踪发布到 issue tracker
  • 感谢@zzzeek 更新 SQLAlchemy 解决了我的问题。

标签: python oracle sqlalchemy kedro


【解决方案1】:

从 SqlAlchemy 1.3.21 升级到 1.3.22 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2014-09-21
    • 2012-11-18
    • 1970-01-01
    • 2014-08-28
    • 2015-08-02
    • 2016-03-15
    • 2013-01-25
    • 2010-12-04
    • 1970-01-01
    相关资源
    最近更新 更多