Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 Oracle 데이터베이스 연결하기 – cx_Oracle 활용 가이드

Python은 cx_Oracle이라는 전용 패키지를 통해 Oracle 데이터베이스에 손쉽게 연결할 수 있습니다. Oracle은 전 세계적으로 가장 널리 사용되는 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나로, Python의 강력한 데이터 처리 기능과 결합하면 데이터 조회, 분석, 조작 작업을 매우 효율적으로 수행할 수 있습니다.

이 글에서는 cx_Oracle 패키지를 설치하고, Oracle 데이터베이스에 연결한 뒤, SQL 쿼리를 실행하는 방법까지 단계별로 살펴보겠습니다.

cx_Oracle 설치하기

Oracle 데이터베이스와의 연결을 설정하려면 먼저 cx_Oracle 패키지를 설치해야 합니다. 아래 명령어를 터미널 또는 명령 프롬프트에 입력하면 간단히 설치할 수 있습니다.

pip install cx_Oracle

참고로, 최신 버전의 Oracle 드라이버는 python-oracledb라는 이름으로 변경되었습니다. 새 프로젝트를 시작한다면 pip install oracledb 명령으로 최신 드라이버를 설치하는 것도 좋은 선택입니다. 기존 cx_Oracle 코드와의 호환성도 대체로 유지됩니다.

Oracle 데이터베이스에 연결하기

패키지 설치가 완료되면 cx_Oracle.connect() 메서드를 사용하여 데이터베이스에 접속할 수 있습니다. 연결 문자열은 일반적으로 사용자이름/비밀번호@서비스명 형식으로 작성합니다.

연결 후에는 커서(cursor) 객체를 생성하고, 이를 통해 SQL 문을 실행합니다. 아래 예제에서는 테이블을 생성하는 DDL 문을 실행해 보겠습니다. 데이터베이스 작업 중 발생할 수 있는 오류에 대비하여 try-except-finally 구조로 예외 처리를 함께 구현하는 것이 좋습니다.

예제 코드

import cx_Oracle

# 데이터베이스 연결
try:
    con = cx_Oracle.connect('username/password@servicename')
    cursor = con.cursor()

    # 테이블 생성
    cursor.execute("create table TableName(COL1 VARCHAR2(200), COL2 NUMBER(8))")
    print("Table Created")

except cx_Oracle.DatabaseError as e:
    print("Problem connecting to Oracle", e)

# 모든 데이터베이스 작업 종료 후 리소스 해제
finally:
    if cursor:
        cursor.close()
    if con:
        con.close()

실행 결과

Table Created

주요 포인트 정리

  • 연결 문자열: username/password@servicename 형식으로 구성되며, 서비스명은 tnsnames.ora 파일에 정의된 이름 또는 호스트 정보일 수 있습니다.
  • 커서 객체: SQL 문을 실행하고 결과를 가져오는 역할을 담당합니다.
  • 예외 처리: cx_Oracle.DatabaseError를 통해 연결 실패나 쿼리 오류를 안전하게 처리할 수 있습니다.
  • 리소스 해제: finally 블록에서 커서와 연결을 반드시 닫아 리소스 누수를 방지해야 합니다.

이처럼 cx_Oracle을 활용하면 몇 줄의 코드만으로 Python 애플리케이션과 Oracle 데이터베이스를 안정적으로 연동할 수 있습니다. SELECT, INSERT, UPDATE 등 다양한 SQL 문도 동일한 방식으로 cursor.execute()를 통해 실행할 수 있으니, 실제 프로젝트에 적용해 보시기 바랍니다.