일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 게임기
- OGGMA
- 오라클
- Chess-TD
- 임바 오토체스
- 영어유머
- 독해연습
- Imba Auto Chess
- 관광
- Mobile Legends
- oracle
- 영어공부
- 골든게이트
- 오큘러스
- 이솝우화
- 롤
- 체스-TD
- MLBB
- Python
- english study
- 영어 유머
- 가볼만한곳
- 왕좌의게임
- 게임
- java program
- 심플한 게임
- 모바일레전드
- 영어독해
- English Joke
- 여행
- Today
- Total
Almost-Native
파이썬에서 Oracle DB 접속하여 데이터 읽기/쓰기하는 방법 설명 및 샘플예제 본문
파이썬에서 Oracle DB 접속하여 데이터 읽기/쓰기하는 방법 설명 및 샘플예제
2022. 6. 11. 18:08파이썬(Python) 에서 Oracle Database 에 접속해서 조회(Select), 등록(Insert) 등의 작업을 하기 위해서는 Oracle DB 에 접속하기 위한 파이썬 라이브러리(DB접속 드라이버)가 필요합니다.
cx_Oracle 이라는 것인데, 이게 최근에는 python-oracledb 로 변경되었습니다.
2022년 현재 시점에는 어떤 것을 쓰던 비슷하고 둘다 잘 돌아갑니다.
하지만, 장기적으로 봤을때는 python-oracledb 라이브러리를 쓰는게 바람직합니다.
여기에서는 두가지 다 사용해서 설명해 보도록 하겠습니다.
cx_Oracle 을 사용하던 python-oracledb 를 사용하던, 먼저 이들을 사용하려면 라이브러리 설치가 필요합니다.
1) cx_Oracle 라이브러리 설치
저는 윈도우즈 PC에서 설치를 했는데, pip 툴을 이용해서 아래와 같이 간단하게 설치가 되었습니다.
2) python-oracledb 라이브러리 설치
python-oracledb 라이브러리는 pip 툴에서 설치할 때 이름은 oracledb 입니다.
pip install oracledb -upgrade 커맨드로 간단하게 설치가 됩니다.
아래는 cx_Oracle 라이브러리를 이용해서 간단하게 Oracle DB 에 접속해서 데이터를 등록(Insert) 하고, 조회(Select) 하는 샘플 예제 입니다.
import cx_Oracle
# create table TEST_TBL ( aa varchar2(100) );
#####################################################################################################
# DB 접속
#####################################################################################################
con = cx_Oracle.connect("scott", "tiger", "192.168.1.171:1521/ORA19", encoding="UTF-8")
cursor = con.cursor()
#####################################################################################################
# Insert (Write to DB)
#####################################################################################################
in_data = "Hello World~ 안녕 오라클-파이썬"
cursor.execute("insert into TEST_TBL (aa) values (:1)", [in_data])
con.commit()
#####################################################################################################
# Select (Read from DB)
#####################################################################################################
cursor.execute("select aa from TEST_TBL")
out_data = cursor.fetchone()
print("=====>", out_data[0])
con.close()
|
import cx_Oracle
: cx_Oracle 라이브러리를 사용하기 위해서 Import 합니다.
# create table TEST_TBL ( aa varchar2(100) );
: 미리 Oracle Db 에 TEST_TBL 테이블을 만들어 둡니다. # 은 코맨트(주석) 입니다.^^
con = cx_Oracle.connect("scott", "tiger", "192.168.1.171:1521/ORA19", encoding="UTF-8")
: Oracle DB 에 접속하기 위해서 DB User, Password 와 접속할 DB 의 IP, Port, Service명 등의 정보가 필요합니다.
Port, 서비스명을 모르는 경우 아래와 같이 해당 DB 서버에서 lsnrctl status 커맨드로 확인할 수 있습니다.
cursor.execute("insert into TEST_TBL (aa) values (:1)", [in_data])
: Insert SQL 구문을 실행합니다. :1 위치에 in_data 변수에 있는 값을 넣어서 Insert 하라는 의미 입니다.
con.commit()
: Oracle DB 에서는 DML 뒤에는 반드시 commit 을 해줍니다. Oracle DB 사용자들에게는 아주 익숙하지만, 타 DB 사용자들의 경우 기본 auto commit 모드로 동작하는 경우가 있어, commit 을 안해주는 경우도 있어 헷갈릴 수 있습니다.
Oracle DB 에서는 DML(Insert/Update/Delete) 구문 뒤에는 반드시 commit 해준다고 생각하면 되고,
Select 구문 뒤에는 하지 않습니다.
cursor.execute("select aa from TEST_TBL")
out_data = cursor.fetchone()
: 조회(Select) SQL 구문도 Insert 와 마찬가지로 execute() 커맨드를 이용합니다.
이때 조회결과는 fetchone() 함수를 이용해서 받게됩니다.
print("=====>", out_data[0])
: 조회된 결과를 화면에 출력합니다. fetchone() 함수로 리턴받으면 tuple 타입으로 받아져서, out_data[0] 과 같이 해줘야 제대로 출력됩니다.
실행결과는 아래와 같습니다.
Oracle DB 내에서 TEST_TBL 테이블을 조회해 보면 아래와 같습니다.
위에는 실행전에 조회한 것으로 조회되는 건이 없습니다. 아래는 실행후에 조회한 것으로 데이터가 들어가 있는것을 확인할 수 있습니다.
아래는 python-oracledb 라이브러리를 이용해서 작성된 같은 프로그램입니다.
거의 모든 구문이 같다고 보면 되고, import 할때 라이브러리명이 oracledb 인 점이 다릅니다.
import oracledb
# create table TEST_TBL ( aa varchar2(100) );
#####################################################################################################
# DB 접속
#####################################################################################################
con = oracledb.connect(user="scott", password="tiger", dsn="192.168.1.171:1521/ORA19")
cursor = con.cursor()
#####################################################################################################
# Insert (Write to DB)
#####################################################################################################
in_data = "Hello World~ 안녕 오라클-파이썬"
cursor.execute("insert into TEST_TBL (aa) values (:1)", [in_data])
con.commit()
#####################################################################################################
# Select (Read from DB)
#####################################################################################################
cursor.execute("select aa from TEST_TBL")
out_data = cursor.fetchone()
print("=====>", out_data[0])
con.close()
|
추가로, connect 하는 부분에서 미묘하게 차이가 납니다. encoding 부분이 없어졌고, user, password, dsn 키워드를 명시적으로 써주는 부분에서 차이가 납니다.
★★★ (( 추가 )) ★★★
▶ 파이썬 Oracle DB 연결 라이브러리 비교 (cx_Oracle, Thin oracledb, Thick oracledb)
▶ 파이썬에서 Oracle DB 로 BLOB 데이터 읽기/쓰기하는 샘플 예제 (cx_Oracle 라이브러리 이용)
▶ 파이썬에서 Oracle DB 로 대용량 BLOB 데이터 읽기/쓰기하는 샘플 예제 (cx_Oracle 라이브러리 Streaming 방식)
▶ 파이썬에서 Oracle DB 로 BLOB 데이터 읽기/쓰기하는 샘플 예제 (oracledb 라이브러리 이용)
▶ 파이썬에서 Oracle DB 로 대용량 BLOB 데이터 읽기/쓰기하는 샘플 예제 (oracledb 라이브러리 Streaming 방식)
▶ 파이썬 프로그램에서 Oracle DB 로 DRCP(공유커넥션풀링) 적용 샘플
'Java 프로그램 개발, IT' 카테고리의 다른 글
파이썬에서 Oracle DB 로 대용량 BLOB 데이터 읽기/쓰기하는 샘플 예제 (cx_Oracle 라이브러리 Streaming 방식) (0) | 2022.06.11 |
---|---|
파이썬에서 Oracle DB 로 BLOB 데이터 읽기/쓰기하는 샘플 예제 (cx_Oracle 라이브러리 이용) (0) | 2022.06.11 |
Oracle Database 버전별 Windows OS 설치가능 버전 정리 (0) | 2022.05.06 |
kubeadm join 실행시 에러 : CGROUPS_PIDS: missing (0) | 2022.01.07 |
kubeadm init 실행시 에러 : 'curl -sSL http://localhost:10248/healthz' failed with error (2) | 2022.01.06 |