Connexion à Oracle DB avec Python

Oct 21 2020

J'essaye de me connecter à ma base de données Oracle avec Python. J'utilise actuellement cx_Oracle pour me connecter mais ne fonctionne pas ...

#!/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()

Erreur:

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

Je suis allé sur le site et je n'ai rien trouvé qui puisse aider ...

Quelque chose dans mon code est-il incorrect ou est-ce autre chose?

Réponses

1 ChristopherJones Oct 22 2020 at 05:52

Votre erreur est

DPI-1047: Impossible de localiser une bibliothèque client Oracle 64 bits: "libclntsh.so: impossible d'ouvrir le fichier objet partagé: aucun fichier ou répertoire de ce type".

Vous avez besoin des binaires du client Oracle Linux 64 bits dans le chemin de recherche de votre système d'exploitation avant de démarrer le processus Python.

Le moyen le plus simple consiste à installer le client instantané gratuit d' Oracle . Utilisez la dernière version 19c - elle vous permettra de vous connecter à Oracle DB 11.2 ou version ultérieure. Les instructions d'installation se trouvent au bas de la page de téléchargement. Si vous installez les RPM, tout est configuré pour vous. Si vous installez le ZIPS, je préfère définir le chemin de recherche de la bibliothèque avec ldconfiglequel est également indiqué dans les instructions.

1 AlonBarad Oct 21 2020 at 20:36

Assurez-vous d'avoir installé le bon client oracle (vous pouvez trouver le package du client oracle à partir d'ici "https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html" et ajoutez le dossier téléchargé dans le dossier où python est installé, puis ajoutez cet emplacement (emplacement du dossier de votre package client) à la variable d'environnement du système.

Je vous suggère de vérifier d'abord la compatibilité de votre architecture OS, Python et Oracle Instant Client:

import platform
platform.architecture()

Ensuite, je vous conseille vivement de définir Oracle Instant Client dans votre notebook jupyter:

import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]

Source: erreur cx_Oracle. DPI-1047: impossible de localiser une bibliothèque client Oracle 64 bits