Connexion à Oracle DB avec Python
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
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.
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