이세개발
article thumbnail

파이썬에서 Firebase의 데이터를 가져오는 방법을 알아본다.

앞의 데이터 삽입부분에서의 pip install 과 Firebase key를 받아 온것으로 생각하고 진행하겠습니다.

2023.09.06 - [Dev/Web] - Firebase 파이썬으로 DB 데이터 삽입

코드

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import json

# Firebase 서비스 계정 키 파일 경로
cred = credentials.Certificate("firebase-adminsdk.json")

# Firebase 앱 초기화
firebase_admin.initialize_app(cred)

# # Firebase 앱 초기화 실시간버전
# firebase_admin.initialize_app(cred, {
#     'databaseURL': 'https://your-project-id.firebaseio.com'
# })

# Firestore 데이터베이스 클라이언트 가져오기
db = firestore.client()

## Firebase 데이터베이스 참조 가져오기 실시간 데이터베이스, firestore

## 데이터베이스
# ref = db.reference('/users')

## 데이터 읽기
# data = ref.get()
# print(data)


## test collection 전부 가져오기
ref = db.collection("test")
docs = ref.stream()
## testdocument 선택 및 가져오기
## ref_docu = ref.document("test_docu")
## doc = ref_docu.get()

## 출력하기
# for doc in docs:
#     print(f"{doc.id} => {doc.to_dict()}")

# Firestore 문서 데이터를 리스트로 변환
doc_list = [doc.to_dict() for doc in docs]
print(doc_list)
# JSON 문자열로 변환
json_data = json.dumps(doc_list)
# print(json_data)
## make json
with open('get_data.json', 'w') as f:
    f.write(json_data)
  • Certificate("path/to/serviceAccountKey.json")
    경로설정은 앞의 게시물인 삽입때와 방법이같다. (key경로)
  • 'databaseURL': 'https://your-project-id.firebaseio.com'
    your-project-id 에는 자신의 appID를 적어주면 된다.(firestore에서는 사용하지 않는듯하다)

    ex) 주소창 hk-netflix

  • .stream()
    모든 test 컬렉션의 데이터 반환할때 쓰임
  • .get()
    문서 데이터 받아오기
  • .where("capital", "==", True)
    문서 검색
  • 그 후 get_data.json 으로 json 파일을 만들어 준다.

 

Firebase의 데이터베이스는 크게 두가지로 나눌수가 있습니다.

그것에 따라 db.reference 경로가 달라집니다.
실시간 데이터베이스의 경우 경로는 /로 시작하며, 특정 노드까지 이어지는 경로를 따라갈 수 있습니다.
예1 ) /users 경로는 "users"라는 톱 레벨 노드를 나타낸다. Firestore의 경우 경로는 컬렉션과 문서를 나타내며, 구분자로 /를 사용합니다.
예2) /users/{user-id}/orders/{order-id} 경로는 "users" 컬렉션 안의 특정 "user-id" 문서의 "orders" 서브컬렉션 안의 특정 "order-id" 문서를 나타냅니다.

'Dev > Web' 카테고리의 다른 글

Firebase 파이썬으로 DB 데이터 삽입  (0) 2023.09.06
Django db 연결  (0) 2023.04.18
Django DRF dj_rest_auth JWT 오류  (0) 2023.04.18
profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!