파이썬 앱을 파이어스토어에 연결하는 방법
개발 중인 파이썬 애플리케이션에서 수익 추적 기능을 구현하고 싶으신가요? 저희 트레이딩 봇 프로젝트도 수익 추적 및 거래 내역의 영구 저장을 위해 클라우드 기반의 NoSQL 데이터베이스인 파이어스토어(Firestore)를 활용했습니다. 이전 글에 이어서 이번에는 파이썬 앱을 파이어스토어에 연결하여 실시간 데이터베이스의 강력한 기능을 사용하는 방법을 소개합니다.
파이어스토어는 실시간 데이터 동기화와 강력한 쿼리 기능을 제공하여 매우 유용하죠. 트레이딩 봇 성과 추적을 위해 DB를 연결하기로 했습니다. 파이썬 애플리케이션에 실시간 데이터베이스를 추가하고 싶으신가요? 클라우드 기반의 NoSQL 데이터베이스인 파이어스토어(Firestore)는 실시간 데이터 동기화와 강력한 쿼리 기능을 제공하여 매우 유용합니다.
이 글에서는 파이썬 앱을 파이어스토어에 연결하는 방법을 단계별로 설명해 드립니다.
1단계: Firebase 프로젝트 설정
먼저 파이어베이스에 로그인하여 새 프로젝트를 생성합니다.
- Firebase Console 접속: Firebase 콘솔에 접속하여 여러분의 Google 계정으로 로그인합니다.
- 새 프로젝트 만들기: 메인 화면에서 프로젝트 추가 버튼을 클릭합니다.
- 프로젝트 정보 입력: 프로젝트 이름(예: python-trading-bot)을 지정하고, Google 애널리틱스 사용 여부를 선택한 뒤 프로젝트를 생성합니다. 편의를 위해 보안규칙은 test모드로 설정합니다.
- Firestore 데이터베이스 생성: 프로젝트가 생성되면 왼쪽 메뉴에서 "Firestore Database"를 선택하고 "데이터베이스 만들기"를 클릭합니다. "실제 모드에서 시작"을 선택하고 다음 단계로 진행합니다. 이 단계에서 보안 규칙을 설정할 수 있지만, 지금은 기본값으로 두고 넘어갑니다.
2단계: Firebase 키 생성
파이썬 앱은 사람 계정이 아니므로, 파이어스토어에 접근할 권한이 있는 특별한 신분증, 즉 서비스 계정 키가 필요합니다. 여러분께서 정확히 기억하고 계신 것처럼, 이 키는 Google Cloud Console의 IAM에서 관리됩니다.
- Google Cloud Console에 접속합니다.
- 상단 메뉴에서 여러분의 Firebase 프로젝트를 선택합니다.
- 왼쪽 메뉴에서 **"IAM 및 관리자(IAM & Admin)"**로 이동합니다.
- 서브 메뉴에서 **"서비스 계정(Service Accounts)"**을 선택합니다.
- 목록에서 여러분의 서비스 계정 이메일 주소를 클릭합니다.
- 새 페이지에서 "키" 탭으로 이동한 뒤, "키 추가" > "새 키 만들기"를 선택합니다.
- 키 유형으로 JSON을 선택하고 "만들기"를 클릭합니다. .json 확장자의 키 파일이 다운로드됩니다. 이 파일을 프로젝트 폴더에 안전하게 보관하세요.
3단계: 필요한 라이브러리 설치
프로젝트 터미널이나 명령 프롬프트에서 firebase-admin
라이브러리를 설치합니다. 이 라이브러리는 파이썬 백엔드에서 Firebase 서비스를 사용할 수 있게 해 줍니다.
pip install firebase-admin
4단계: 파이어스토어에 연결하고 데이터 다루기
이제 코드를 작성하여 파이어스토어에 연결하고 데이터를 읽고 쓰는 방법을 알아보겠습니다. 아래 코드는 파이어베이스를 초기화하고, record_trade
함수를 통해 거래 데이터를 저장하는 방법을 보여줍니다.
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import datetime
# Firebase 초기화
# 다운로드한 키 파일 경로를 지정합니다.
cred = credentials.Certificate("firebase_credentials.json")
firebase_admin.initialize_app(cred)
db = firestore.client()
def record_trade(symbol: str, side: str, price: float, amount: float, timestamp: datetime.datetime = None):
"""
거래 정보를 Firestore에 기록하는 함수.
Args:
symbol (str): 거래 심볼 (예: 'BTC/KRW')
side (str): 매매 구분 ('BUY' 또는 'SELL')
price (float): 거래 가격
amount (float): 거래 수량
timestamp (datetime.datetime, optional): 거래 시간. 기본값은 현재 시간.
"""
if timestamp is None:
timestamp = datetime.datetime.now()
trade_data = {
'symbol': symbol,
'side': side,
'price': price,
'amount': amount,
'timestamp': timestamp,
'total_value': price * amount
}
# 'trades'라는 컬렉션에 새 문서를 추가합니다.
# Firestore는 자동으로 고유 ID를 생성합니다.
doc_ref = db.collection('trades').add(trade_data)
print(f"거래 기록 완료. 문서 ID: {doc_ref[1].id}")
return doc_ref[1].id
# 예시: 거래 기록
if __name__ == '__main__':
print("Firestore 연결 및 데이터 저장 테스트를 시작합니다.")
trade_id = record_trade('BTC/KRW', 'BUY', 160000000.0, 0.001)
print(f"첫 번째 거래가 문서 ID {trade_id}로 저장되었습니다.")
trade_id_2 = record_trade('ETH/KRW', 'SELL', 3000000.0, 0.01, datetime.datetime(2025, 9, 20, 10, 30, 0))
print(f"두 번째 거래가 문서 ID {trade_id_2}로 저장되었습니다.")
파이어스토어는 실시간으로 데이터를 동기화하므로, 한 번만 연결해 두면 앱의 다른 부분에서 데이터를 읽고 쓸 수 있습니다. 이 가이드가 여러분의 파이썬 앱에 강력한 데이터베이스를 쉽게 추가하는데 도움이 되었으면 합니다.
'프로젝트' 카테고리의 다른 글
스캘핑 봇 개발 일지 #5 빗썸 자동거래 봇 완성: 파이썬 핵심 구성 요소와 공격적 스캘핑 전략 가이드 (0) | 2025.09.20 |
---|---|
스캘핑 봇 개발 일지 #3. 속도 향상! Docker 컨테이너에서 Hot Reloading 환경 구축하기 (feat. Nodemon) (0) | 2025.09.16 |
스캘핑 봇 개발 일지 #2. 속도 향상! Docker 컨테이너에서 Hot Reloading 환경 구축하기 (feat. Nodemon) (0) | 2025.09.14 |
스캘핑 봇 개발 일지 #1 나만의 빗썸 자동매매 스캘핑 봇: 개발부터 Oracle Cloud 배포까지 (Python, Docker, Telegram) (0) | 2025.09.11 |
로또번호 추천 (0) | 2025.08.16 |