Подключение Python 3.x к базе данных Oracle - PullRequest
0 голосов
/ 23 октября 2018

Я не могу подключиться к нашей корпоративной базе данных Oracle с помощью python 3 / cx_Oracle.

Установлено:

    python 3 -32 bit
    cx_Oracle
    Oracle Client 12.1.0.2.0

Моя попытка подключения:

    import cx_Oracle
    conn = cx_Oracle.connect(user='user', password='pwd', dsn='working_dsn')

Моя переменная PATH включает прямой путь к моей рабочей библиотеке Oracle (работает с использованием SQL Dev

Сообщение об ошибке:

     cx_Oracle.DatabaseError: DPI-1050: Oracle Client library is at version 0.0 but must be at version 11.2 or higher

Я изучил инструкции по установке Orcale и не нашел способаЯ ранее пытался безуспешно, переустанавливал мой компьютер и переустанавливал Oracle, чтобы обеспечить только одну версию Oracle, но все еще безуспешно. Мне нужно перейти с R на Python, и это последний кусок, который мне нужен, чтобы переключиться. Я могу соединиться с R, используя JDBC driverclass / dbConnect.

Если cx_Oracle не работает, есть ли другой способ подключения к Oracle из Python3?

Есть какие-нибудь мысли или предложения для поиска?Другие типы подключения используются?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Полученная ошибка говорит о том, что на вашем компьютере установлена ​​более старая версия клиента Oracle.Найдите в каталогах переменной среды PATH файл OCI.DLL.Если вы найдете старую версию, вам нужно будет удалить или переименовать ее - просто имейте в виду, что приложение, в которое помещен файл, перестанет работать!

Другая возможность - перейти в командную строку и выполнить следующие действия.

PATH=my_path_to_instant_client;%PATH%
python test_connect.py

Наконец, убедитесь, что если ваш Python 32-битный, то же самое относится и к вашей мгновенной установке клиента, а если ваш Python 64-битный, убедитесь, что ваша мгновенная установка клиента также 64-битная.

0 голосов
/ 23 октября 2018

pip3 install cx_Oracle

первый метод:

db = cx_Oracle.connect('root/root@localhost: 1523/orcl')

второй метод:

db = cx_Oracle.connect('root/root@localhost: 1523/orcl')

третий метод

makedsn(IP/HOST, PORT, TNSNAME)
dsn = cx_Oracle.makedsn('localhost','1523','orcl')
db = cx_Oracle.connect('root','root',dsn)
...