Подключение к Oracle DB с помощью Python

Oct 21 2020

Я пытаюсь подключиться к своей базе данных Oracle с помощью Python. В настоящее время я использую cx_Oracle для подключения к нему, но не работает ...

#!/usr/bin/python3
import cx_Oracle

dsn_tns = cx_Oracle.makedsn('Host Name', 'Port Number', service_name='Service Name')

conn = cx_Oracle.connect(user=r'user', password='password', dsn=dsn_tns)

c = conn.cursor()
c.execute('select * from person')

conn.close()

Ошибка:

conn = cx_Oracle.connect(user=r'g_user', password='G_user', dsn=dsn_tns)
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

Зашел на Сайт и не нашел ничего, что могло бы помочь ...

Что-то в моем коде неверно или что-то еще?

Ответы

1 ChristopherJones Oct 22 2020 at 05:52

Ваша ошибка

DPI-1047: не удается найти 64-разрядную клиентскую библиотеку Oracle: «libclntsh.so: невозможно открыть файл общих объектов: нет такого файла или каталога».

Перед запуском процесса Python вам потребуются двоичные файлы 64-разрядного клиента Oracle Linux в пути поиска операционной системы .

Самый простой способ - установить бесплатный Oracle Instant Client . Используйте последнюю версию 19c - она ​​позволит вам подключиться к Oracle DB 11.2 или новее. Инструкции по установке находятся внизу страницы загрузки. Если вы установите RPM, все настроено для вас. Если вы устанавливаете ZIPS, я предпочитаю указать путь поиска библиотеки, ldconfigкоторый также указан в инструкциях.

1 AlonBarad Oct 21 2020 at 20:36

Убедитесь, что вы установили правильный клиент oracle (вы можете найти пакет клиента oracle отсюда "https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html" и добавить загруженная папка внутри папки, в которой установлен python, а затем добавьте это местоположение (местоположение папки вашего клиентского пакета) в системную переменную среды. Надеюсь, что это сработает.

Я предлагаю вам сначала проверить совместимость вашей ОС, архитектуры Python и Oracle Instant Client:

import platform
platform.architecture()

Тогда я определенно советую вам установить Oracle Instant Client внутри вашего ноутбука jupyter:

import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]

Источник: ошибка cx_Oracle. DPI-1047: не удается найти 64-разрядную клиентскую библиотеку Oracle.