일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- oracle
- 모바일레전드
- 오라클
- OGGMA
- 영어유머
- 가볼만한곳
- MLBB
- Python
- java program
- 골든게이트
- 게임기
- 영어 유머
- Imba Auto Chess
- 관광
- 영어공부
- english study
- English Joke
- 롤
- 영어독해
- 심플한 게임
- 왕좌의게임
- 임바 오토체스
- Mobile Legends
- 여행
- Chess-TD
- 이솝우화
- 체스-TD
- 독해연습
- 오큘러스
- 게임
- Today
- Total
Almost-Native
파이썬 Oracle DB 연결 라이브러리 비교 (cx_Oracle, Thin oracledb, Thick oracledb) 본문
파이썬 Oracle DB 연결 라이브러리 비교 (cx_Oracle, Thin oracledb, Thick oracledb)
2022. 6. 11. 23:17Python 프로그램에서 Oracle Database 에 접속해서 DB 작업을 할 수 있도록 도와주는 라이브러리에 cx_Oracle 과 python-oracledb 가 있습니다.
서로 다른 것은 아니고, 원래 있던 cx_Oracle 이 버전업을 하면서 이름을 python-oracledb 라고 바꾼것입니다.
즉, 라이브러리명이 바뀌면서 기능이 좀 추가된 형태라고 보면 됩니다.
따라서, 라이브러리에서 제공하는 함수들의 이름이나 기본적인 사용방법은 거의 그대로이거나 약간씩 다른 부분이 있는 정도 입니다.
python-oracledb 로 가면서 가장 크게 바뀐 부분은 "thin 모드" 와 "thick 모드"가 생겼다는 점 입니다.
thin 모드 / thick 모드 의 차이는 Oracle Client 를 사용하느냐 아니냐의 차이입니다.
cx_Oracle 라이브러리를 사용하는 경우, 반드시 Oracle Client Library 가 있어야 했습니다. 즉, cx_Oracle 을 사용하는 파이썬 프로그램이 돌아가는 서버에 Oracle Client 가 설치되어 있어야 합니다.
하지만, python-oracle 라이브러리를 사용하는 경우에는 Oracle Client 가 없어도 되고, 이게 thin mode 입니다.
Oracle Client 를 따로 설치하지 않아도 되기 때문에 엄청 편해 보일수 있긴 하지만, 이로 인한 제약사항도 있습니다.
DB Startup/Stop, TAF기능사용, BFILE Type 지원, 21c JSON Data Type 지원, 2PC 등의 기능을 Thin 모드에서는 사용할 수 없습니다.
자세한 제약사항은 여길 참조하세요. (https://python-oracledb.readthedocs.io/en/latest/user_guide/appendix_a.html#)
# cx_Oracle 라이브러리 connect 샘플
import cx_Oracle
con = cx_Oracle.connect("scott", "tiger", "192.168.1.171:1521/ORA19", encoding="UTF-8")
|
# python-oracledb 라이브러리 connect 샘플
import oracledb
oracledb.init_oracle_client(lib_dir=r"C:\instantclient_19_14")
con = oracledb.connect(user="scott", password="tiger", dsn="192.168.1.171:1521/ORA19")
|
위 python-oracledb 라이브러리 샘플에서 oracledb.init_oracle_client() 부분이 들어가면 thick 모드로 동작하게 되고, 이 부분이 없으면 thin 모드로 동작합니다.
lib_dir=r"C:\instantclient_19_14" 에서 r 은 윈도우즈 디렉토리 표현방식(\)을 위한 것입니다.
리눅스에서는 lib_dir="/home/instantclient_19_14" 와 같이 r 문자 없이 사용합니다.
라이브러리 디렉토리를 잘못 지정해서 제대로 찾지 못하는 경우에는 그냥 공백으로 놔두면 알아서 찾습니다.
oracledb.init_oracle_client()
(( 참고 )) 파이썬에서 Oracle DB 접속하여 데이터 읽기/쓰기하는 방법 설명 및 샘플예제
'Java 프로그램 개발, IT' 카테고리의 다른 글
리눅스 nohup: redirecting stderr to stdout 경고메시지 제거방법 (0) | 2022.06.21 |
---|---|
Oracle Goldengate 에러 (OGG-08100, ORA-01031 Error) (0) | 2022.06.19 |
파이썬에서 Oracle DB 로 대용량 BLOB 데이터 읽기/쓰기하는 샘플 예제 (oracledb 라이브러리 Streaming 방식) (0) | 2022.06.11 |
파이썬에서 Oracle DB 로 BLOB 데이터 읽기/쓰기하는 샘플 예제 (oracledb 라이브러리 이용) (0) | 2022.06.11 |
파이썬에서 Oracle DB 로 대용량 BLOB 데이터 읽기/쓰기하는 샘플 예제 (cx_Oracle 라이브러리 Streaming 방식) (0) | 2022.06.11 |