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()를 통해 실행할 수 있으니, 실제 프로젝트에 적용해 보시기 바랍니다.