오라클 자율운영 DB 접속 테스트 완료 후 다음으로 Python 에서 라이브러리로 DB를 사용하기 위한 작업이다.
Linux 에서 (WSL2) 사용하는 방법은 정리했는데 Windows 를 추가로 정리한다.)
0. 사전작업
- VSCode 설치
- VSCode 에 Python 사용 가능
1. cx_Oracle 라이브러리 설치
VSCode 의 터미널에서 cx_Oracle 라이브러리를 설치하는 명령을 입력한다. 나는 시스템 전역으로 사용하기 위해 아래의 명령으로 설치하였다.
python -m pip install cx_Oracle --upgrade
위 명령은 cx_Oracle 라이브러리 공식문서에 나와있다.
2. Oracle Instant Client 다운로드
아마 기존에 오라클 자율운영 DB 를 SQL Developer 로 열어보았다면 이미 해당 라이브러리 파일들이 다운받아져 있을 것이다. 이를 다시 정리해 본다.
Oracle Instant Client 는 오라클에서 제공하는 사이트에서 다운받을 수 있다. (링크)
링크에 접속하면 현재 22년10월 기준으로 21.6.0.0.0 버전을 받을 수 있었다.
Basic 압축 파일을 받는다.
해당 압축을 원하는 경로에 해제한다.
나의 경우 D 드라이브에 Oracle 폴더를 생성하여 압축해제 하였다.
3. tnsnames.ora 전자지갑 복사
Oracle Cloud 에서 받은 전자지갑 파일을 앞서 압축해제한 폴더 (위 예시의 경우 D:\Oracle\instantclient_21_6) 예하 network/admin 아래 복사해 놓는다.
최종경로 : D:\Oracle\instantclient_21_6\network\admin
4. 환경변수 설정
Oracle Instant Client 를 사용하기 위해 Windwos 에서 환경변수 설정을 한다.
Windows 검색 기능을 활용하면 쉽게 찾을 수 있다. Windows 검색에서 "환경" 을 검색하면 제어판의 환경변수 창을 띄워준다. (진짜 편한듯)
팝업된 창에서 "환경 변수"를 클릭한다.
위와 같이 "NLS_LANG", "ORACLE_HOME", "TNS_ADMIN" 값을 입력한다.
해당 환경변수 값들은 이 링크에서 자세히 확인할 수 있다.
다음은
Path 환경변수에 instantclient 경로를 추가해 준다.
(이름 가리기 겁나 귀찮네;;)
5. 테스트
LIB_PATH="D:\\Oracle\\instantclient_21_6\\"
WALLET_KEY=LIB_PATH+"network\\admin\\tnsnames.ora"
# USER_ID="userid" # Set user id
# USER_PW="userpw" # SEt user pw
def read_lines(file_path) :
lines = []
f = open(file_path)
lines = f.readlines()
f.close()
return lines
def get_tns_name() :
lines = util.read_lines(WALLET_KEY)
return lines[0].split(' ')[0].strip()
def connect_oracle() :
dns_name = get_tns_name()
cx_Oracle.init_oracle_client(lib_dir=LIB_PATH)
print(dns_name)
connection = cx_Oracle.connect(user=USER_ID, password=USER_PW, dsn=dns_name)
cursor = connection.cursor()
cursor.execute("select * from ALL_ALL_TABLES")
res = cursor.fetchall()
for row in res:
print(row)
connect_oracle()