반응형
Python 에서 DB 연결을 해서 Oracle에 접속하게 하는 패키지 cx_Oracle.
작은 데이터를 불러오는데는 크게 문제가 안되지만, 대용량 데이터를 불러올 때에는 오래 걸리는 시간 탓에 간혹 타임아웃 에러가 나고는 한다.
이유는 python 안에서 주어진 시간 안에 oracle 이 구동되어야 하는데 그 시간을 넘을 때 나는 애러이다.
그럴 때에는 timeout 시간을 설정하여 늘릴 수 있다.
1. 타임아웃 에러문
타임아웃 에러가 나는 문장은 대게 아래와 같다
DB Error : DPI-1080 : connection was closed by ORA-3156
Traceback (most recent call last): ~~~
cx_Oracle.DatabaseError: DPI-1010:not connected
위와 같은 문장은 연결 중 시간이 다되어 끊어진 경우를 이야기 한다.
2. 타임아웃 설정하기
cx_Oracle에서 타임아웃을 설정하는 방법은 아래와 같다.
conn.callTimeout = timeout으로 설정한다. 이 때 timeout은 밀리세컨즈(1/1000초)로 관리한다.
## 예제문
import cx_Oracle
conn = cx_Oracle.connect({userID}, {userPW}, {HostIP})
conn.callTimeout = 300 # 300밀리세컨즈(300/1000초)
cursor = conn.cursor()
sql = '''select * from TABLEA'''
cursor.execute(sql)
conn.commit()
conn.close()
위와 같이 설정을 하면 타임아웃으로 인해 생기는 에러를 막을 수 있다.
반응형
'Code > Python' 카테고리의 다른 글
[python] 대용량 csv 불러오는 패키지 dask 간단 리뷰 (2) | 2022.09.30 |
---|---|
[Python] inspect 모듈의 getsource() 함수 (0) | 2022.06.12 |
[Python] HTTP web server log dataframe으로 불러오기 (with pandas) (0) | 2022.02.13 |
[Python] 주피터 노트북 테마 변경하기 (3) | 2021.05.17 |
[Python]Pytorch - RuntimeError:Error(s) in loading state_dict ... : Missing key(s) in state_dict: ... Unexpected key(s) in state_dict:... GPU 병렬 사용 문제 (0) | 2021.04.30 |