[Stockping #2] 수집한 뉴스 데이터 Oracle DB 저장(INSERT), 파이썬 오라클 연동, 오라클 19c 설치
my code archive
article thumbnail
반응형

크게 어려운 게 아닌데 꽤 애먹었던 작업..ㅎㅎ

그리고 나는 회사에서는 윈도우, 집에서는 맥북으로 작업하는데 아직도 맥북에서 오라클 19c 연동하기는 성공하지 못했다 온갖 에러를 다 겪는 중,,,일단 회사에서 INSERT 성공한 것만으로 만족하기로...

 

1. 오라클 19c 설치

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

 

Database Software Downloads | Oracle

Oracle Database Express Edition Previous Database Release Software Oracle Database 10.2, 11.x, 12.x, and 18c are available as a media or FTP request for those customers who own a valid Oracle Database product license for any edition. To request access to t

www.oracle.com

오라클 클라이언트 전자지갑이 19c이므로 버전을 맞추어서 설치해야 한다.

위 링크에서 OS에 맞는 버전을 다운받고 setup.exe를 실행하여 설치하면 된다.

 

2. instantclient_버전 폴더 / network / admin 경로에 오라클 클라우드 생성 시 발급받은 전자지갑 파일을 압축 해제하여 넣어주어야 한다! (중요)

 

3. 접속 테스트

DBeaver로 접속해 보면 테이블이 잘 생성되었다.


4. 파이썬 오라클 연동을 위해서는 cx_Oracle이 필요하다.

pip install cx_oracle

import cx_oracle

 

5. 코드 작성

cx_oracle.connect 함수에 접속할 오라클 클라우드 DB 사용자 이름, 비밀번호, dsn을 넣어 접속한 뒤 커서를 생성하여 sql문을 작성하면 된다!

# CODE [오라클 연동]
def save_oracle(jsonResult):
    # Instant Client 경로 입력
    LOCATION = r"C:\\oracle\\instantclient_19"
    # 환경변수 등록
    os.environ["PATH"] = LOCATION + ";" + os.environ["PATH"]
    # 오라클 클라우드 DB 사용자 이름, 비밀번호, dsn 입력
    connection = cx_Oracle.connect(user=db_info['username'], password=db_info['password'], dsn=db_info['dsn'])
    # 커서 생성
    cursor = connection.cursor()
    # DB 저장
    sql = "insert into tb_news values (news_seq.nextval, :title, :originallink, :link, :description, :pubDate)"
    for rec in jsonResult:
        try:
            cursor.execute(sql, rec)
        except: # 데이터 중 encoding 오류 데이터는 제외하고 DB 저장
            print(rec)
            for reckey in rec:
                rec[reckey] = re.sub('[^가-힝0-9a-zA-Z<>&.?:/#\[\]\\s]', ' ', rec[reckey]) # []에 없는 문자를 제거, ^~ :~를 제외한 나머지
            cursor.execute(sql, rec)    # 수정된 데이터 DB 저장
            print(rec)
    connection.commit()

 

6. INSERT 완료!

 

처음 보는 온갖 에러를 만나고 디버깅하며 찾았는데 대부분 오타가 원인이었고,,,ㅎㅎ 어쨌든 처음으로 파이썬을 다뤄보는데 자바랑 진짜 다르고 여러면에서 코드가 간결하다고 느끼는 중. 이렇게 또 무언가 새로운 작업을 스스로 해내서 뿌듯하군요.

 

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형