Connessione a Oracle DB con Python
Sto provando a connettermi al mio database Oracle con Python. Attualmente sto usando cx_Oracle per connettermi con esso ma non funziona ...
#!/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()
Errore:
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
Sono andato sul sito e non ho trovato nulla che potesse aiutare ...
Qualcosa nel mio codice è sbagliato o è qualcos'altro?
Risposte
Il tuo errore è
DPI-1047: Impossibile individuare una libreria client Oracle a 64 bit: "libclntsh.so: impossibile aprire il file oggetto condiviso: nessun file o directory di questo tipo".
Prima di avviare il processo Python, sono necessari i file binari del client Oracle Linux a 64 bit nel percorso di ricerca del sistema operativo .
Il modo più semplice è installare Oracle Instant Client gratuito . Utilizza l'ultima versione 19c: ti consentirà di connetterti a Oracle DB 11.2 o versioni successive. Le istruzioni per l'installazione sono in fondo alla pagina di download. Se installi gli RPM, tutto è configurato per te. Se installi lo ZIPS preferisco impostare il percorso di ricerca della libreria con il ldconfigquale viene mostrato anche nelle istruzioni.
Assicurati di aver installato il client Oracle corretto (puoi trovare il pacchetto client Oracle da qui "https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html" e aggiungere la cartella scaricata all'interno della cartella in cui è installato python e quindi aggiungi questa posizione (posizione della cartella del pacchetto client) alla variabile di ambiente del sistema.Spero che funzioni.
Ti consiglio di verificare prima la compatibilità del tuo sistema operativo, Python e l'architettura Oracle Instant Client:
import platform
platform.architecture()
Quindi, ti consiglio vivamente di impostare Oracle Instant Client all'interno del tuo notebook jupyter:
import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]
Fonte: errore cx_Oracle. DPI-1047: Impossibile individuare una libreria client Oracle a 64 bit