반응형
크게 어려운 게 아닌데 꽤 애먹었던 작업..ㅎㅎ
그리고 나는 회사에서는 윈도우, 집에서는 맥북으로 작업하는데 아직도 맥북에서 오라클 19c 연동하기는 성공하지 못했다 온갖 에러를 다 겪는 중,,,일단 회사에서 INSERT 성공한 것만으로 만족하기로...
1. 오라클 19c 설치
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
오라클 클라이언트 전자지갑이 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 완료!
처음 보는 온갖 에러를 만나고 디버깅하며 찾았는데 대부분 오타가 원인이었고,,,ㅎㅎ 어쨌든 처음으로 파이썬을 다뤄보는데 자바랑 진짜 다르고 여러면에서 코드가 간결하다고 느끼는 중. 이렇게 또 무언가 새로운 작업을 스스로 해내서 뿌듯하군요.
반응형
'💻 my code archive > 📘Python' 카테고리의 다른 글
[Stockping #5] 파이썬 Blueprint 사용법, Flask 플라스크 모듈화 (0) | 2022.12.21 |
---|---|
[Stockping #4] Python 파이썬 BeautifulSoup 실시간 코스피, 코스닥 네이버 금융 웹 크롤링 (0) | 2022.11.17 |
[Stockping #3] Python 파이썬 DB 데이터 SELECT, Flask 화면 뿌리기 (0) | 2022.11.17 |
[Stockping #1] 파이썬 네이버 뉴스 데이터 수집하기 (0) | 2022.11.08 |