Подключение к Oracle DB с помощью Python
Я пытаюсь подключиться к своей базе данных 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
Зашел на Сайт и не нашел ничего, что могло бы помочь ...
Что-то в моем коде неверно или что-то еще?
Ответы
Ваша ошибка
DPI-1047: не удается найти 64-разрядную клиентскую библиотеку Oracle: «libclntsh.so: невозможно открыть файл общих объектов: нет такого файла или каталога».
Перед запуском процесса Python вам потребуются двоичные файлы 64-разрядного клиента Oracle Linux в пути поиска операционной системы .
Самый простой способ - установить бесплатный Oracle Instant Client . Используйте последнюю версию 19c - она позволит вам подключиться к Oracle DB 11.2 или новее. Инструкции по установке находятся внизу страницы загрузки. Если вы установите RPM, все настроено для вас. Если вы устанавливаете ZIPS, я предпочитаю указать путь поиска библиотеки, ldconfigкоторый также указан в инструкциях.
Убедитесь, что вы установили правильный клиент 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.