Conexión a Oracle DB con Python
Estoy tratando de conectarme a mi base de datos Oracle con Python. Actualmente estoy usando cx_Oracle para conectarme con él pero no funciona ...
#!/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()
Error:
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
Fui al Sitio y no encontré nada que pudiera ayudar ...
¿Hay algo en mi código incorrecto o es algo más?
Respuestas
Tu error es
DPI-1047: No se puede localizar una biblioteca de cliente Oracle de 64 bits: "libclntsh.so: no se puede abrir el archivo de objeto compartido: no existe ese archivo o directorio".
Necesita los binarios de cliente de Oracle Linux de 64 bits en la ruta de búsqueda de su sistema operativo antes de iniciar el proceso de Python.
La forma más sencilla es instalar Oracle Instant Client gratuito . Utilice la última versión 19c: le permitirá conectarse a Oracle DB 11.2 o posterior. Las instrucciones de instalación se encuentran al pie de la página de descarga. Si instala los RPM, todo está configurado para usted. Si instalas los ZIPS prefiero configurar la ruta de búsqueda de la biblioteca con la ldconfigque también se muestra en las instrucciones.
Asegúrese de haber instalado el cliente de Oracle correcto (puede encontrar el paquete de cliente de Oracle desde aquí "https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html" y agregar la carpeta descargada dentro de la carpeta donde está instalado Python y luego agregue esta ubicación (ubicación de la carpeta del paquete del cliente) a la variable de entorno del sistema. Espero que funcione.
Le sugiero que primero verifique la compatibilidad de su sistema operativo, Python y la arquitectura de Oracle Instant Client:
import platform
platform.architecture()
Entonces, definitivamente le recomiendo que configure Oracle Instant Client dentro de su computadora portátil jupyter:
import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]
Fuente: error cx_Oracle. DPI-1047: no se puede encontrar una biblioteca de cliente Oracle de 64 bits