2.1.3. 수집한 데이터를 Oracle Autonomous Database에 저장하기

이 섹션에서는 수집한 가상화폐 시세 데이터를 데이터베이스에 저장하는 방법을 설명합니다. Oracle Autonomous Database (ADB)를 활용합니다. ADB는 클라우드 기반의 완전 관리형 데이터베이스 서비스입니다. 데이터 관리의 복잡성을 줄여줍니다. 자동화된 운영과 뛰어난 성능을 제공합니다.

본 튜토리얼에서는 파이썬을 사용하여 ADB에 데이터를 저장하는 과정을 안내합니다. 먼저 ADB에 접속하기 위한 설정을 진행합니다. 그 다음, 파이썬 코드를 통해 데이터를 삽입합니다. 마지막으로 데이터 저장 결과를 확인합니다.

1단계: Oracle Autonomous Database 접속 설정

ADB에 데이터를 저장하기 위해서는 먼저 접속 설정을 완료해야 합니다. Wallet 파일을 다운로드하고, tnsnames.ora 파일을 구성해야 합니다. sqlnet.ora 파일도 필요에 따라 설정합니다.

  1. Wallet 파일 다운로드: OCI 콘솔에서 ADB 인스턴스에 접속합니다. “DB 연결” 메뉴에서 Wallet 파일을 다운로드합니다. Wallet 파일은 데이터베이스 접속 정보를 담고 있습니다.

  2. tnsnames.ora 파일 구성: Wallet 파일 압축을 해제합니다. tnsnames.ora 파일을 확인합니다. 이 파일에는 데이터베이스 접속 정보가 정의되어 있습니다. 필요에 따라 이 파일을 편집하여 접속 정보를 변경할 수 있습니다.

  3. sqlnet.ora 파일 설정: sqlnet.ora 파일은 보안 설정을 담당합니다. Wallet 파일 경로를 지정해야 합니다. 다음 내용을 sqlnet.ora 파일에 추가합니다.

    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="<Wallet 파일 경로>")))
    SSL_SERVER_DN_MATCH=yes

    <Wallet 파일 경로>에는 Wallet 파일이 저장된 디렉토리 경로를 입력합니다.

2단계: 파이썬 환경 설정 및 라이브러리 설치

파이썬에서 ADB에 접속하기 위한 환경을 설정합니다. 필요한 라이브러리를 설치합니다. cx_Oracle 라이브러리는 Oracle 데이터베이스 접속을 지원합니다.

  1. cx_Oracle 라이브러리 설치: 터미널 또는 명령 프롬프트에서 다음 명령어를 실행합니다.

    bash
    pip install cx_Oracle

    cx_Oracle 설치 시 오류가 발생할 수 있습니다. Oracle Instant Client를 설치해야 할 수도 있습니다. Oracle Instant Client는 Oracle 웹사이트에서 다운로드할 수 있습니다. 다운로드 후 환경 변수를 설정해야 합니다.

  2. 환경 변수 설정: LD_LIBRARY_PATH 환경 변수에 Oracle Instant Client 라이브러리 경로를 추가합니다.

    bash
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<Oracle Instant Client 라이브러리 경로>

    <Oracle Instant Client 라이브러리 경로>에는 Oracle Instant Client 라이브러리가 설치된 디렉토리 경로를 입력합니다.

3단계: 파이썬 코드를 이용한 데이터 저장

파이썬 코드를 작성하여 ADB에 데이터를 저장합니다. 다음은 업비트에서 수집한 데이터를 ADB에 저장하는 예제 코드입니다.

import cx_Oracle
import pyupbit
import pandas as pd

# 데이터베이스 접속 정보
dsn_tns = cx_Oracle.makedsn('<호스트>', '<포트>', service_name='<서비스 이름>')
db_user = '<DB 사용자 이름>'
db_password = '<DB 비밀번호>'

# 데이터베이스 접속
try:
    conn = cx_Oracle.connect(user=db_user, password=db_password, dsn=dsn_tns)
    cursor = conn.cursor()
    print("데이터베이스 접속 성공")
except Exception as e:
    print("데이터베이스 접속 실패:", e)
    exit()

# 업비트에서 데이터 가져오기
df = pyupbit.get_ohlcv("KRW-BTC", count=200)

# 데이터베이스 테이블 생성 (테이블이 없을 경우)
try:
    cursor.execute("""
        CREATE TABLE BTC_OHLCV (
            TRADING_DATE DATE,
            OPEN_PRICE NUMBER,
            HIGH_PRICE NUMBER,
            LOW_PRICE NUMBER,
            CLOSE_PRICE NUMBER,
            VOLUME NUMBER
        )
    """)
    print("테이블 생성 성공")
except Exception as e:
    print("테이블 생성 실패:", e)

# 데이터베이스에 데이터 삽입
try:
    for index, row in df.iterrows():
        sql = """
            INSERT INTO BTC_OHLCV (TRADING_DATE, OPEN_PRICE, HIGH_PRICE, LOW_PRICE, CLOSE_PRICE, VOLUME)
            VALUES (:1, :2, :3, :4, :5, :6)
        """
        cursor.execute(sql, [index.to_pydatetime(), row['open'], row['high'], row['low'], row['close'], row['volume']])
    conn.commit()
    print("데이터 삽입 성공")
except Exception as e:
    print("데이터 삽입 실패:", e)
    conn.rollback()

# 데이터베이스 접속 종료
cursor.close()
conn.close()
print("데이터베이스 접속 종료")
  • <호스트>, <포트>, <서비스 이름>: tnsnames.ora 파일에서 확인할 수 있습니다.
  • <DB 사용자 이름>, <DB 비밀번호>: ADB 사용자 계정 정보입니다.

4단계: 데이터 저장 결과 확인

SQL Developer 또는 다른 데이터베이스 클라이언트를 사용하여 ADB에 접속합니다. BTC_OHLCV 테이블에 데이터가 정상적으로 저장되었는지 확인합니다.

SELECT * FROM BTC_OHLCV;

쿼리 결과를 통해 데이터 저장 성공 여부를 확인할 수 있습니다.

요약

이 섹션에서는 수집한 가상화폐 데이터를 Oracle Autonomous Database에 저장하는 방법을 알아보았습니다. ADB 접속 설정, 파이썬 환경 설정, 데이터 저장 코드 작성, 결과 확인 단계를 거쳤습니다. 이 과정을 통해 자동매매 시스템의 데이터 저장 기반을 구축할 수 있습니다.

위로 스크롤