이 섹션에서는 수집한 가상화폐 시세 데이터를 데이터베이스에 저장하는 방법을 설명합니다. Oracle Autonomous Database (ADB)를 활용합니다. ADB는 클라우드 기반의 완전 관리형 데이터베이스 서비스입니다. 데이터 관리의 복잡성을 줄여줍니다. 자동화된 운영과 뛰어난 성능을 제공합니다.
본 튜토리얼에서는 파이썬을 사용하여 ADB에 데이터를 저장하는 과정을 안내합니다. 먼저 ADB에 접속하기 위한 설정을 진행합니다. 그 다음, 파이썬 코드를 통해 데이터를 삽입합니다. 마지막으로 데이터 저장 결과를 확인합니다.
1단계: Oracle Autonomous Database 접속 설정
ADB에 데이터를 저장하기 위해서는 먼저 접속 설정을 완료해야 합니다. Wallet 파일을 다운로드하고, tnsnames.ora
파일을 구성해야 합니다. sqlnet.ora
파일도 필요에 따라 설정합니다.
-
Wallet 파일 다운로드: OCI 콘솔에서 ADB 인스턴스에 접속합니다. “DB 연결” 메뉴에서 Wallet 파일을 다운로드합니다. Wallet 파일은 데이터베이스 접속 정보를 담고 있습니다.
-
tnsnames.ora
파일 구성: Wallet 파일 압축을 해제합니다.tnsnames.ora
파일을 확인합니다. 이 파일에는 데이터베이스 접속 정보가 정의되어 있습니다. 필요에 따라 이 파일을 편집하여 접속 정보를 변경할 수 있습니다. -
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 데이터베이스 접속을 지원합니다.
-
cx_Oracle
라이브러리 설치: 터미널 또는 명령 프롬프트에서 다음 명령어를 실행합니다.bash
pip install cx_Oraclecx_Oracle
설치 시 오류가 발생할 수 있습니다. Oracle Instant Client를 설치해야 할 수도 있습니다. Oracle Instant Client는 Oracle 웹사이트에서 다운로드할 수 있습니다. 다운로드 후 환경 변수를 설정해야 합니다. -
환경 변수 설정:
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 접속 설정, 파이썬 환경 설정, 데이터 저장 코드 작성, 결과 확인 단계를 거쳤습니다. 이 과정을 통해 자동매매 시스템의 데이터 저장 기반을 구축할 수 있습니다.