Verbindung zu Oracle DB mit Python

Oct 21 2020

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

1 ChristopherJones Oct 22 2020 at 05:52

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.

1 AlonBarad Oct 21 2020 at 20:36

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