Python 3.6 / Oracle 18c / Oracle Client 12 выпуск (OCI-22303) - PullRequest
0 голосов
/ 01 ноября 2018

Я хотел бы раскрыть здесь проблему, которую я должен знать, если у кого-то еще было то же самое (и исправило это :))

У меня есть скрипт Python (3.6.1 64 бит), использующий cx_oracle 6.0.3. подключить от Oracle 18c DB. Связь работает хорошо. Моя проблема, когда я пытаюсь создать переменную Python из определения типа базы данных, используя gettype.

Вот мой пример:

db = cx_Oracle.connect("scott/tigger@oracle_18c")
res = db.gettype("type_employee").newobject()

В зависимости от конфигурации у меня возникает следующая проблема:

2018-10-31 15:28:15,019 - ERROR - OCI-22303: type ""."type_employee" not found

С Oracle 11g скрипт работает хорошо. С Oracle 18c, который зависит от клиента Oracle, которого я использую (я думаю, именно там я и занимаюсь своими исследованиями). Когда я использую клиент Oracle 11.1.0.x, он работает хорошо. проблема возникает, когда клиент - Oracle 12.

У меня есть другие тесты / изменения, которые нужно сделать:

  • Обновите cx_oracle, чтобы использовать версию 7.0.0
  • Тестовый клиент Oracle 12 с Oracle 11g DB

Я сделаю andpost здесь результат в ближайшее время.

Кто-нибудь имел / имеет такую ​​же проблему и может поделиться опытом / решением?

Спасибо.

Редактировать 1

Я выполнил следующие дополнительные тесты с настройкой на базе данных Oracler 18c:

  • Python 3.6.1 64 бит, CX-ORACLE 6.0.3, клиент Oracle 11 64 бит => ОК
  • Python 3.6.1 64 бит, CX-ORACLE 7.0.0, клиент Oracle 11 64 бит => ОК
  • Python 3.6.1 64 бита, CX-ORACLE 7.0.0, клиент Oracle 12 64 бита => NOK
  • Python 3.6.1 64 бита, CX-ORACLE 6.0.3, клиент Oracle 12 64 бита => NOK

Использование клиента Oracle 12 32 бит не имеет смысла, поскольку оно несовместимо с моей конфигурацией.

Редактировать 2

Я выполнил следующие дополнительные тесты с настройкой на базе данных Oracler 11g:

  • Python 3.6.1 64 бит, CX-ORACLE 6.0.3, клиент Oracle 11 64 бит => ОК
  • Python 3.6.1 64 бита, CX-ORACLE 7.0.0, клиент Oracle 11 64 бита => ОК
  • Python 3.6.1 64 бита, CX-ORACLE 7.0.0, клиент Oracle 12 64 бита => ОК
  • Python 3.6.1 64 бита, CX-ORACLE 6.0.3, клиент Oracle 12 64 бита => ОК

1 Ответ

0 голосов
/ 01 ноября 2018

Проблема в том, что команда стала чувствительной к регистру в Oracle Client 12 и Oracle 18c DB (Oracle 11g нет проблем). Если я изменю свой код с

res = db.gettype("TYPE_EMPLOYEE").newobject()

Работает нормально

...