DPI-1050: клиентская библиотека Oracle имеет версию 0.0, но требуется версия 11.2 или выше - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь подключиться к удаленной БД своей работы, но когда я запускаю скрипт python, он показывает эту ошибку.

Я уже все сделал В этом руководстве говорится, что я должен иметь в качестве требований , но ошибка продолжает появляться. Я пытался подключиться через sql *, и он работает как следует. Я скачал клиентские библиотеки oracle 12.2 (32-битная версия, поскольку он должен иметь ту же архитектуру, что и python), я работаю с Oracle Database 11g версии 11.2.0.3, Python 3.7 и уже установил Visual Studio Redistributable 2013.

Это скрипт python, который я использую для подключения к БД. Очевидно, что IP-адрес и порт отличаются от реального, а также учетные данные.

import cx_Oracle

host='196.0.0.0'
port='8080'
service_name='SID'
pwd= 'PASS'

dsn_tns = cx_Oracle.makedsn(host,port,service_name)

connection = cx_Oracle.connect('user',pwd,dsn_tns)

Всякий раз, когда я запускаю его, я получаю сообщение об ошибке, хотя папка клиентских библиотек оракула уже находится в ПУТИ моего компьютера. Нужно ли что-то настраивать со стороны сервера? Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

У меня была точно такая же проблема, и я сослался на документ, на который вы ссылались здесь.Я использую PyCharm в качестве IDE и использую python.exe, который использует pycharm, я обнаружил, что он 32-разрядный (просто щелкните python.exe, и откроется командная строка, такая как экран, и в первой строке будет указано, является ли он 32-разрядным или 64-разрядным).

Затем, используя приведенную ниже ссылку, я скачал Oracle Instant Client.

https://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

Я выбрал 32-битную и 12.2 версию (последняя была v18.x на момент написания этой статьи).Этот 32-битный должен соответствовать вашей версии Python (которая также была 32-битной в моем случае).

Затем я извлек zip-файл мгновенного клиента, поместил его в папку C: \ oracle (не важно, где выположить) и моя структура каталогов была ..

C: \ oracle \ instantclient_12_2

Теперь я поместил это местоположение в качестве первого расположения в моей системной переменной среды "Путь"компьютера Windows.

После всего этого я перезапустил компьютер (не нужен) и использовал pycharm и подключился следующим образом ...

import cx_Oracle as cxo
conn = cxo.connect("user_id", "password", "host_name:port_no/sid")
print(conn.version)
cur = conn.cursor()
cur.execute('SELECT \'X\' FROM DUAL')
for result in cur:
    print(result[0])
cur.close()
conn.close()
0 голосов
/ 10 апреля 2019

Сообщение об ошибке было улучшено в cx_Oracle 7.1 - но проблема в том, что обнаружена более старая версия (чем 11.2) клиентских библиотек Oracle.Вы должны убедиться, что обнаружена новая версия, которую вы установили.Вы можете сделать это, убедившись, что ваша переменная окружения PATH содержит ваши клиентские библиотеки 12.2.В прошлом более старые версии клиентских библиотек Oracle часто устанавливались в C:\windows\system32.

...