Verbindung zu Oracle DB mit Python
Ich versuche, mit Python eine Verbindung zu meiner Oracle-Datenbank herzustellen. Ich verwende derzeit cx_Oracle, um eine Verbindung herzustellen, funktioniert aber nicht ...
#!/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
Ich ging auf die Seite und fand nichts, was helfen könnte ...
Ist etwas in meinem Code falsch oder ist es etwas anderes?
Antworten
Ihr Fehler ist
DPI-1047: Eine 64-Bit-Oracle-Clientbibliothek kann nicht gefunden werden: "libclntsh.so: Freigegebene Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis".
Sie benötigen die 64-Bit-Client-Binärdateien von Oracle Linux in Ihrem Betriebssystem-Suchpfad, bevor Sie den Python-Prozess starten.
Am einfachsten ist es, den kostenlosen Oracle Instant Client zu installieren . Verwenden Sie die neueste 19c-Version, mit der Sie eine Verbindung zu Oracle DB 11.2 oder höher herstellen können. Die Installationsanweisungen finden Sie am Fuß der Download-Seite. Wenn Sie die RPMs installieren, ist alles für Sie konfiguriert. Wenn Sie das ZIPS installieren, ziehe ich es vor, den Bibliothekssuchpfad festzulegen, mit ldconfigdem auch in der Anleitung gezeigt wird.
Stellen Sie sicher, dass Sie den richtigen Oracle-Client installiert haben (das Oracle-Client-Paket finden Sie unter "https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html" und fügen Sie hinzu Der heruntergeladene Ordner in dem Ordner, in dem Python installiert ist, und fügen Sie diesen Speicherort (Speicherort Ihres Client-Paketordners) zur Umgebungsvariablen des Systems hinzu. Ich hoffe, dass dies funktioniert.
Ich empfehle Ihnen, zunächst die Kompatibilität Ihrer Betriebssystem-, Python- und Oracle Instant Client-Architektur zu überprüfen:
import platform
platform.architecture()
Dann rate ich Ihnen auf jeden Fall, den Oracle Instant Client in Ihrem Jupyter-Notizbuch einzurichten:
import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]
Quelle: cx_Oracle-Fehler. DPI-1047: Eine 64-Bit-Oracle-Clientbibliothek kann nicht gefunden werden