[DB] cx_Oracle을 활용한 Oracle DB 연결 및 쿼리 사용 방법

es.Seong·2024년 1월 30일
0
post-custom-banner

보통 기관 DB를 다루게 되면 Oracle을 많이 다루는 경우가 많다.
파이썬에서 Oracle DB에 연결하고, 쿼리를 실행하는 방법은 cx_Oracle 라이브러리를 사용하면 된다.

1. cx_Oracle 설치

pip install cx_Oracle

2. Oracle DB 연결

함수를 정의하여 DB 연결을 해주면된다.
입력 값은 유저명, 비밀번호, 호스트명, 포트, 서비스명을 입력해주면된다.

import cx_Oracle

def dbConnection(username, password, host, port, service_name):\

    # 오라클 DB 연결
    try:
        dsn = cx_Oracle.makedsn(host, port, service_name=service_name)
        conn = cx_Oracle.connect(username, password, dsn)
        return conn

    # 오류 발생시 오류 메시지 출력
    except Exception as e:
        print(e)
        return None
 
conn = dbConnection(USERNAME, PASSWORD, HOST, PORT, SERVICE_NAME)
print("DB Connection Success")
cursor = conn.cursor()

DB 연결 함수를 conn 변수에 할당했다면, cursor() 메소드를 통해 커서 객체를 생성한다.
이 커서 변수를 통해 쿼리를 실행할 수 있다.

3. 쿼리문 실행

ex_query  = """
SELECT * FROM A
"""

data = cursor.execute(query)
# 읽어온 데이터를 pd.DataFrame로 저장
df = pd.DataFrame(data.fetchall())

파이썬에서 쿼리를 문자열로 할당할 때는 쿼리 마지막에 ;를 붙이지 않는다. 만약 붙인다면 오류가 발생한다.
쿼리를 실행하려면 커서 객체에 execute 메소드를 통해 쿼리를 실행할 수 있다.

fetchall()로 불러온 데이터는 튜플의 형태로 저장되기 때문에 확인이 불편하다.
pd.DataFrame()으로 묶어주면 쉽게 데이터프레임으로 변경할 수 있다.
단, 컬럼명은 불러오지 않는다.

4. 쿼리 내 파이썬 변수 사용

파이썬을 통해 프로그램을 만들 때 파이썬 내에서 선언된 특정 변수를 쿼리에 넣어 조회를 하거나 저장을 해야할 때가 발생한다.

이 때에는 쿼리에 :변수명 을 통해 파이썬 변수를 사용할 수 있다.

col_a =1234
ex_query  = """
SELECT * FROM A
WHERE col_a = :col_a
"""

data = cursor.execute(query, col_a = col_a)
# 읽어온 데이터를 pd.DataFrame로 저장
df = pd.DataFrame(data.fetchall())

파이썬에 선언한 col_a라는 int 값이 쿼리에 사용된다.
즉, 실행되는 쿼리는 다음과 같다.

SELECT * FROM A
WHERE col_a =1234
profile
Graduate student at Pusan National University, majoring in Artificial Intelligence
post-custom-banner

0개의 댓글