개요
python firebase admin sdk를 활용하여 실시간데이터베이스에서 데이터를 읽는 방법과 path를 작성하는 방법입니다.
가정
다음과 같이 데이터가 저장되어 있다고 가정합니다.
- fruit :
- apple :
- price : "100"
- size : "3"
- banana :
- price : "200"
- size : "92"
- orange :
- price : "600"
- people :
- amy
- james
기본 설정
python 스크립트에서 아래와 같이 작성합니다.
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
cred = credentials.Certificate(파이어베이스 콘솔에서 받은 인증 파일.json)
firebase = firebase_admin.initialize_app(cred, {
'databaseURL' : 파이어베이스 데이터베이스 주소
})
데이터 읽기
fruit 내 모든 데이터를 읽어 가져옵니다.
fruit_ref = db.reference('fruit')
fruits = fruit_ref.get()
banana의 가격만을 읽어 가져옵니다.
apple_price_ref = db.reference('fruit').child(f'{apple}/{price}')
apple_price = apple_price_ref.get()
path
앞선 코드에서 child 파라미터에 path 를 넣어 희망하는 데이터만 쏙 읽을 수 있습니다.
▶ child 함수 정의 소스코드
...
if not path or not isinstance(path, str):
raise ValueError(
'Invalid path argument: "{0}". Path must be a non-empty string.'.format(path))
if path.startswith('/'):
raise ValueError(
'Invalid path argument: "{0}". Child path must not start with "/"'.format(path))
full_path = self._pathurl + '/' + path
return Reference(client=self._client, path=full_path)
...
위 로직을 통해 path는 다음과 같은 조건을 만족해야 함을 알 수 있습니다.
- 전달받은 인자가 '값'을 가져야 하며, 문자열이어야 합니다.
- '/' 으로 시작하면 안됩니다.
참고 자료
'프로그래밍 > 기타 프로그래밍' 카테고리의 다른 글
[Python] nohup을 활용한 백그라운드 실행하기 (0) | 2024.08.09 |
---|---|
[java] @Override 메소드 오버라이딩에 대한 이해 (0) | 2024.01.13 |
[SAP/ABAP] EVENT DATA_CHANGED 활용하여 ALV 체크박스(checkbox) 클릭 시 바로 반영하기 (0) | 2023.12.14 |
[C++] vector <queue<int>> 그리고 vector<pair<int,int>> (1) | 2023.11.20 |
[SAP/ABAP] RETURN과 EXIT의 차이 (0) | 2023.11.13 |