Koneksi ke Oracle DB dengan Python
Saya mencoba untuk terhubung ke Database Oracle saya dengan Python. Saya saat ini menggunakan cx_Oracle untuk terhubung dengannya tetapi tidak berhasil ...
#!/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()
Kesalahan:
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
Saya membuka Situs dan tidak menemukan apa pun yang dapat membantu ...
Apakah ada sesuatu di Kode Saya yang Salah atau ada yang lain?
Jawaban
Kesalahan Anda adalah
DPI-1047: Tidak dapat menemukan perpustakaan Klien Oracle 64-bit: "libclntsh.so: tidak dapat membuka file objek bersama: Tidak ada file atau direktori seperti itu".
Anda memerlukan binari klien 64-bit Oracle Linux di jalur pencarian sistem operasi Anda sebelum Anda memulai proses Python.
Cara termudah adalah dengan menginstal Oracle Instant Client gratis . Gunakan versi 19c terbaru - ini akan memungkinkan Anda terhubung ke Oracle DB 11.2 atau yang lebih baru. Petunjuk penginstalan ada di bagian bawah halaman download. Jika Anda menginstal RPM, semuanya telah dikonfigurasi untuk Anda. Jika Anda menginstal ZIPS, saya lebih suka mengatur jalur pencarian perpustakaan ldconfigyang juga ditampilkan dalam instruksi.
Pastikan Anda telah menginstal klien oracle yang benar (Anda dapat menemukan paket klien oracle dari sini "https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html" dan tambahkan folder yang diunduh di dalam folder tempat python diinstal dan kemudian tambahkan lokasi ini (lokasi folder paket klien Anda) ke variabel lingkungan sistem. Semoga itu akan berhasil.
Saya sarankan Anda untuk terlebih dahulu memeriksa kompatibilitas arsitektur OS, Python, dan Oracle Instant Client Anda:
import platform
platform.architecture()
Kemudian, saya pasti menyarankan Anda untuk mengatur Klien Instan Oracle di dalam notebook jupyter Anda:
import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]
Sumber: kesalahan cx_Oracle. DPI-1047: Tidak dapat menemukan pustaka Klien Oracle 64-bit