Python ile Oracle DB'ye bağlantı
Oracle Veritabanıma Python ile bağlanmaya çalışıyorum. Şu anda onunla bağlantı kurmak için cx_Oracle kullanıyorum ama çalışmıyor ...
#!/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()
Hata:
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
Siteye girdim ve yardımcı olabilecek hiçbir şey bulamadım ...
Kodumdaki bir şey Yanlış mı yoksa başka bir şey mi?
Yanıtlar
Senin hatan
DPI-1047: 64 bit Oracle Client kitaplığı bulunamıyor: "libclntsh.so: paylaşılan nesne dosyası açılamıyor: Böyle bir dosya veya dizin yok".
Python sürecine başlamadan önce işletim sistemi arama yolunuzda Oracle Linux 64-bit istemci ikili dosyalarına ihtiyacınız var .
En kolay yol, ücretsiz Oracle Instant Client'ı kurmaktır . En son 19c sürümünü kullanın - Oracle DB 11.2 veya sonrasına bağlanmanıza izin verecektir. Kurulum talimatları, indirme sayfasının alt kısmındadır. RPM'leri kurarsanız, her şey sizin için yapılandırılır. ZIPS'i kurarsanız ldconfig, talimatlarda da gösterilen kitaplık arama yolunu ayarlamayı tercih ederim .
Doğru oracle istemcisini kurduğunuzdan emin olun (oracle istemci paketini buradan bulabilirsiniz "https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html" ve ekleyin python'un kurulu olduğu klasörün içindeki indirilen klasörü ve ardından bu konumu (istemci paket klasörünüzün konumu) sistemin ortam değişkenine ekleyin. Çalışacağını umuyoruz.
Öncelikle işletim sisteminizin, Python ve Oracle Instant Client mimarinizin uyumluluğunu kontrol etmenizi öneririm:
import platform
platform.architecture()
Ardından, Oracle Instant Client'ı jupyter not defterinizin içine yerleştirmenizi kesinlikle tavsiye ederim:
import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]
Kaynak: cx_Oracle hatası. DPI-1047: 64 bit Oracle İstemci kitaplığı bulunamıyor