SQLAlchemy Oracle - InvalidRequestError: не удалось получить уровень изоляции

У меня проблемы с доступом к таблицам в базе данных Oracle через соединение SQLAlchemy. В частности, я использую Kedro catalog.load('table_name') и получаю сообщение об ошибке Table table_name not found. Поэтому я решил проверить свое соединение, используя метод, указанный в этом ответе: Как проверить механизм SqlAlchemy объект.

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

Я попытался явно добавить уровень изоляции, как описано в документацию примерно так:

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"
)

но я получаю ту же ошибку во всех случаях.


person Pierre Delecto    schedule 21.01.2021    source источник
comment
Убедитесь, что у вас установлена ​​последняя версия SQL Alchemy. В него были внесены некоторые недавние изменения, касающиеся уровня изоляции и Oracle.   -  person Christopher Jones    schedule 22.01.2021
comment
привет! Ошибка, которую вы видите, может возникнуть при подключении() только в SQLAlchemy 1.3.21. в версии 1.3.22 приведенная выше ошибка фиксируется внутри и не возникает при подключении(); вы бы увидели это только в том случае, если бы вы явно вызвали метод get_isolation_level(). если вы видите эту ошибку в версии 1.3.22 или более поздней, опубликуйте полную трассировку стека, желательно в системе отслеживания ошибок.   -  person zzzeek    schedule 22.01.2021
comment
Спасибо @zzzeek, ​​обновление SQLAlchemy решило мою проблему.   -  person Pierre Delecto    schedule 22.01.2021


Ответы (1)


Обновление с SqlAlchemy 1.3.21 до 1.3.22 решило проблему.

person Pierre Delecto    schedule 22.01.2021