[Python] 파이썬과 Oracle Cloud DB 연결하기

hyem·2021년 7월 19일
0
post-thumbnail

나를 비롯한 팀원들 모두의 끊임없는 디버깅..디버깅..리팩토링...
일주일간 머리빠져라 반복하고 이 프로젝트는 얼추 마무리된줄 알았는데...

주말 쉬고왔더니 새로운 과제가 생겼다 ^-^

🎊 파이썬과 DB연결하기!

우리의 파이썬 프로그램을 실행하면서 발생하는 데이터들을 오라클 DB에 저장해보려고 한다.

여러명이 한 DB계정에 접근해야 하기 때문에 Cloud DB를 사용했다.

1. Oracle 홈페이지에서 Instant Client 다운받기

파이썬에서 oracle 데이터베이스에 접근하기 위해서는 window 운영체제에서 오라클 데이터베이스에 연결해주는 dll 파일이 필요한데, 이때 사용하는 것이 Oracle Instant Client 라고 한다.

https://www.oracle.com/database/technologies/instant-client/downloads.html

위 링크로 들어가서 자신의 운영체제에 맞는 파일을 다운로드한다.

2. Cloud DB 전자지갑 넣어주기

다운받아진 instantclient_19_11 폴더 내에 network폴더, 또 그 안에 admin 폴더를 생성해주었다.
그리고 admin 폴더 안에 클라우드 DB 계정을 만들면서 다운받아뒀던 전자지갑 파일을 복사해서 압축해제하고 넣어줬다.

3. 명령 prompt에서 cx_oracle install

cmd창을 켜고,
pip install cx_oracle
를 입력하여 cx_oracle 모듈을 설치해준다.

쭉 설치가 되다가 중간에 Proceed ([y]/n)?가 나오면 y를 눌러서 계속 진행한다.

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

마지막에 이렇게 3줄이 나오면 설치 성공!

4. 파이썬 파일에서 cx_oracle 모듈 import

이제 준비가 다 되었으니 자신이 사용하는 편집기로 파이썬 파일을 열어서 잘 연결되는지 테스트해본다.

import cx_Oracle

cx_Oracle.init_oracle_client(lib_dir=r"C:\management\oraclework\instantclient_19_11") 
# 본인이 Instant Client 넣어놓은 경로를 입력해준다

connection = cx_Oracle.connect(user='myusername', password='mypassword', dsn='mydb_high')
# 본인이 접속할 오라클 클라우드 DB 사용자이름, 비밀번호, dsn을 넣어준다.

dsn에 넣어줄 값은
오라클 전자지갑 안에 있는 파일 중 tnsnames라는 이름의 파일을 메모장을 통해 열어보면 맨 앞에 나와있다.

나는 만들었던 클라우드 DB 이름이 mydb라서 mydb_high를 넣어주었다.

여기까지 하면 내 파이썬 파일과 오라클 DB가 연결된다 👏👏👏

5. sql문 사용

이제 자유자재로 파이썬 파일에서 sql문을 사용해보자!

import cx_Oracle

cx_Oracle.init_oracle_client(lib_dir=r"C:\management\oraclework\instantclient_19_11") 
connection = cx_Oracle.connect(user='myusername', password='mypassword', dsn='mydb_high')

# 커서 생성
cursor = connection.cursor()

# pytab 테이블 생성
cursor.execute("create table pytab (id number, data varchar2(20))")

# 테이블에 데이터 삽입
rows = [ (1, "First" ),
         (2, "Second" ),
         (3, "Third" ),
         (4, "Fourth" ),
         (5, "Fifth" ),
         (6, "Sixth" ),
         (7, "Seventh" ) ]

cursor.executemany("insert into pytab (id, data) values (:1, :2)", rows)

# 변경사항 commit
connection.commit()

# 커서, connection 종료 
cursor.close()
connection.close()

위와 같이 파이썬 파일에서 실행을 시켜준 후 (실행을 꼭 잘시켜줘야함!), sqldeveloper에 접속해 데이터가 잘 들어갔는지 확인해본다.

SELECT * FROM PYTAB;

무사히 완료 :) :)

👀 우리의 파이썬 봇이 저장할 데이터는..?

지금까지 우리 조가 구현한 파이썬 봇의 기능 대부분은 사용자에게 선택지를 주고, 사용자가 그 중에서 선택하면 그에 맞는 정보를 출력해주는 식이었다.

그래서 사용자가 그닥 저장할 만한 유의미한 데이터를 남기지 않아서.. 약간씩 기능을 추가해보기로 했다 ^_ㅠ

완성 코드는.. to be continued...

0개의 댓글