Python을 사용하여 Oracle DB에 연결
Python을 사용하여 Oracle 데이터베이스에 연결하려고합니다. 현재 cx_Oracle을 사용하여 연결하고 있지만 작동하지 않습니다.
#!/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()
오류:
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
나는 사이트에 가서 도움이 될만한 것을 찾지 못했습니다 ...
내 코드의 내용이 잘못되었거나 다른 것입니까?
답변
귀하의 오류는
DPI-1047 : 64 비트 Oracle 클라이언트 라이브러리를 찾을 수 없습니다. "libclntsh.so : 공유 개체 파일을 열 수 없습니다 : 해당 파일 또는 디렉토리가 없습니다".
Python 프로세스를 시작 하기 전에 운영 체제 검색 경로에 Oracle Linux 64 비트 클라이언트 바이너리가 필요합니다 .
가장 쉬운 방법은 무료 Oracle Instant Client 를 설치하는 것 입니다. 최신 19c 버전을 사용하십시오-Oracle DB 11.2 이상에 연결할 수 있습니다. 설치 지침은 다운로드 페이지 하단에 있습니다. RPM을 설치하면 모든 것이 구성됩니다. ZIPS를 설치하는 경우 ldconfig지침에도 표시되는 라이브러리 검색 경로를 설정 하는 것이 좋습니다.
올바른 Oracle 클라이언트를 설치했는지 확인하십시오 (여기 "https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html"에서 oracle 클라이언트 패키지를 찾을 수 있음). 파이썬이 설치된 폴더 안에 다운로드 한 폴더를 추가 한 다음이 위치 (클라이언트 패키지 폴더의 위치)를 시스템의 환경 변수에 추가하십시오.
먼저 OS, Python 및 Oracle Instant Client 아키텍처의 호환성을 확인하는 것이 좋습니다.
import platform
platform.architecture()
그런 다음 jupyter 노트북 내부에 Oracle Instant Client를 설정하는 것이 좋습니다.
import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]
출처 : cx_Oracle 오류. DPI-1047 : 64 비트 Oracle 클라이언트 라이브러리를 찾을 수 없습니다.