본문 바로가기
IT

파이썬(python)으로 오라클 타임스텐 데이터베이스 접속하고 DML 실행하기

by eddy's warehouse 2024. 4. 2.

오라클 타임스텐 매뉴얼( Database / Other Databases / TimesTen In-Memory Database / Release 22.1)의 Open Source Languages Support Guide를 살펴보면 Python에 대한 설명이 나와있습니다. 오늘은 이 매뉴얼을 보고 오라클 타임스텐 DB에 접속해서 데이터를 조작하는 작업을 해보려고 합니다.

 

먼저 오라클 타임스텐이 설치되어있지 않거나, 데이터베이스가 생성되어있지 않은 분들은 아래 링크를 참고해서 준비하고 오시기 바랍니다.

연관 글 보기
오라클 타임스텐 데이터베이스 시작 및 종료와 사용자 생성하기

우분투 리눅스에서 오라클 타임스텐 데이터베이스 생성 및 기본 명령 수행하기

Oracle TimesTen(오라클 타임스텐 22.1.x) DBMS 우분투 리눅스(Ubuntu Linux)에 설치하기

파이썬(python)으로 오라클 타임스텐 데이터베이스 접속하고 DML 실행하기 썸네일

오라클 타임스텐에서 파이썬 지원

타임스텐에서 지원하는 Python 버전에 대한 자세한 내용은 https://github.com/oracle/oracle-timesten-samples/tree/master/languages/python 에서 README.md 파일을 참조하세요.

Python 애플리케이션에서 Oracle 또는 TimesTen 데이터베이스에 액세스 하기 위한 Python 확장 모듈은 cx_Oracle입니다. 이 모듈은 Python 데이터베이스 API 2.0 사양을 준수합니다. 이 모듈에 대한 일반적인 정보는 https://github.com/oracle/python-cx_Oracle 에서 확인할 수 있습니다.

TimesTen에서 지원하는 Python 확장 모듈의 버전에 대한 자세한 내용은 README.md 파일에 있는데, 이 글에서는 튜토리얼 수준으로 따라 할 수 있도록 설명드립니다.

 

오라클 타임스텐 Python 확장 모듈 설치

Python 확장 모듈을 설치하려면 인터넷에 액세스할 수 있어야 합니다. 방화벽이 있는 환경에서 외부 인터넷에 액세스 하려면 프록시 서버를 지정하는 http_proxy 및 https_proxy 환경 변수를 설정해야 할 수 있습니다.

 

Python 확장 모듈을 다운로드하는 방법 세가지

Python 확장 모듈을 다운로드하는 방법에는 여러 가지가 있습니다.

아래에 세 가지 방법을 설명드리니, 설정 및 환경에 가장 적합한 방법을 선택하세요.

1. git clone을 사용하여 GitHub에서 소스 파일을 다운로드합니다. 이 방법을 사용하려면 시스템에 git이 설치되어 있어야 합니다. https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#install-using-github 의 지침을 참조하세요.

 

2. Python Pip 패키지 관리자를 사용하여 미리 빌드된 패키지를 다운로드합니다. https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#quick-start-cx-oracle-installation 의 지침과 해당 문서의 플랫폼별 섹션을 적절히 참조하세요.

 

3. RPM과 같은 플랫폼별 패키지 관리자를 통해 미리 빌드된 바이너리를 다운로드하세요.
yum과 같은 유틸리티를 통해 RPM 패키지 관리자를 사용할 수 있습니다.
cx_Oracle RPM 패키지는 Oracle Linux yum 서버(http://yum.oracle.com/)에서 사용할 수 있습니다. 이에 대한 자세한 내용은 https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#installing-cx-oracle-rpms-on-oracle-linux
이 방법은 미리 빌드된 바이너리를 제공하지만 필요에 따라 소스 코드를 다운로드하고 컴파일합니다.

 

위의 방법들 중 자신에게 맞는 것을 선택하면 되는데, 저는 손쉽게 설치할 수 있는 pip를 이용해서 설치해 보도록 하겠습니다.

pip를 이용해서 cx_Oracle 설치하기

제 우분투 리눅스의 경우 python3가 설치되어 있으므로 python3를 이용해서 다음과 같이 cx_Oracle을 설치해 주었습니다.

timesten:~/tt_instances/ttinstance$ python3 -m pip install cx_Oracle --upgrade
Defaulting to user installation because normal site-packages is not writeable
Collecting cx_Oracle
  Downloading cx_Oracle-8.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (892 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 892.6/892.6 KB 8.3 MB/s eta 0:00:00
Installing collected packages: cx_Oracle
Successfully installed cx_Oracle-8.3.0

Python에서 타임스텐에 대한 연결 구성하기

오라클 타임스텐에 연결을 할 때, 두 가지 방법이 있습니다. 하나는 TNS를 이용해서 접근하는 법이 있고 다른 하나는 direct connection을 이용해서 접근하는 법이 있습니다.

TNS를 이용하는 것은 성능상 좋지 않으므로 오늘 예제에서는 direct connection을 이용해서 접속하는 법을 알아보도록 하겠습니다.

사용자 이름과 비밀번호 그리고 다음과 같은 연결 문자열을 입력합니다.

#direct connection을 위해서는 아래와 같은 연결 문자열을 사용합니다.
connection = cx_Oracle.connect("appuser", "password", "myhost/sampledb:timesten_direct")

 

타임스텐에 테이블을 만들고 DML을 수행하는 예제 프로그램

저의 경우 사용자 tpcc, 비밀번호 tpcc에 localhost의 tpcc 데이터베이스에 연결하므로 다음과 같이 코드를 작성하였습니다.

##
## simple.py
##
from __future__ import print_function
import cx_Oracle

def run():
  try:
    connection = cx_Oracle.connect("tpcc", "tpcc", "localhost/tpcc:timesten_direct")

    cursor = connection.cursor()
    cursor.execute("""
      CREATE TABLE employees(first_name VARCHAR2(20), last_name VARCHAR2(20))""")
    print("Table has been created")
    values = [["ROBERT", "ROBERTSON"], ["ANDY", "ANDREWS"], ["MICHAEL",
             "MICHAELSON"]]
    cursor.executemany("INSERT INTO employees VALUES (:1, :2)", values)
    print("Inserted ", len(values), "employees into the table")
    cursor.execute("""
      SELECT first_name, last_name FROM employees""")
    for fname, lname in cursor:
      print("Selected employee:", fname, lname)
    cursor.execute("DROP TABLE employees")
    print("Table has been dropped")
    cursor.close()
    connection.close()
    print("Connection has been released")

  except Exception as e:
    # Something went wrong
    print("An error occurred", str(e))

run()

 

위의 파일을 simple.py로 저장 후에 다음과 같이 실행하면 timesten 데이터베이스에 테이블을 만들고 DML을 수행할 수 있습니다.

timesten:~/tt_instances/ttinstance/python$ python3 simple.py
Table has been created
Inserted  3 employees into the table
Selected employee: ROBERT ROBERTSON
Selected employee: ANDY ANDREWS
Selected employee: MICHAEL MICHAELSON
Table has been dropped
Connection has been released

 

 

오늘은 오라클 타임스텐 DBMS에 파이썬으로 접속하여 간단하게 테이블을 만들고 DML을 수행하는 것을 해보았습니다.

더 자세한 내용을 알고 싶으시면 아래 타임스텐 공식 파이썬 매뉴얼을 참고하시면 될 것 같습니다.

 

 

참고: https://docs.oracle.com/en/database/other-databases/timesten/22.1/open-source-languages/support-python1.html#GUID-003AE736-4C17-40E5-BEBF-09D4B53E5AB4

 

facebook twitter kakaoTalk kakaostory naver band shareLink