프로그래밍 언어/Python

파이썬과 Firebase 연동하기

트리맨스 2020. 7. 23. 12:10
반응형

 

Firebase는 구글에서 출시한 데이터베이스 프로그램이다. 이것의 특징은 간단한 사용법, 구글의 생태계 안에서(일부 외부 프로그램 포함) 상당히 자유로운 사용범위, 데이터 분석 및 머신러닝 등 다양한 부가 기능 제공이 있다. 구글에서는 파이썬에서도 Firebase를 이용하여 통신 및 데이터 수정을 할 수 있도록 해 두었다. 파이썬을 이용하여 Firebase랑 연동하는 법을 알아보자.

 

 

파이썬과 Firebase 연동을 위한 사전 작업


파이썬에서는 fireabse_admin 이라는 패키지를 먼저 설치해야 한다. 각자 개발 환경에 따라서 설치를 진행해 주자.

 

- 아나콘다

conda activate 가상환경
pip install firebase_admin
pip3 install firebase_admin


- 리눅스

pip install firebase_admin
pip3 install firebase_admin

 

 

Firebase 에서는 키 값을 다운받아야 한다. 먼저 공식 홈페이지 가입부터 해 두자.

firebase.google.com

 

Firebase

Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다.

firebase.google.com

 

 

그 다음 프로젝트를 생성한 다음 프로젝트를 클릭한다. 이곳은 프로젝트의 초기 화면이다. 여기서 좌측 상단의 톱니바퀴 버튼을 누르면 프로젝트 설정이 보인다. 

 

 

 

프로젝트 설정에서 서비스 계정 항목을 들어가면, Firebase Admin SDK 가 보일 것이다. 구글에서 공식적으로 firebase_admin에 대한 서비스를 제공하기 떄문이다.

 

 

 

Admin SDK 구성 스니펫에서 python 항목을 선택한 다음, 새 비공개 키를 생성하고 나서 키를 다운 받는다. (키 생성) 받은 파일은 json 형식으로 이루어져 있는 나의 개인 키다. 나만 알아야만 하는 열쇠 이므로 키가 공개될 우려가 있는 곳에 보이지 않게 주의한다.

 

 

 

데이터베이스 규칙도 설정을 해 주어야 한다. 나는 사용이 간단한 Realtime Database 를 이용하여 통신을 할 것이다. 프로젝트의 초기 화면에서 좌측에 Database를 클릭하고 새 데이터베이스를 만든다. 보안 규칙을 테스트 모드로 시작한다. 테스트 모드로 설정하는 이유는 프로덕션 모드에서 시작하면 기본적으로 읽기/쓰기 비공개로 시작하기 때문이다. 데이터베이스를 만들고 나서 규칙을 수정하자. 규칙 탭에서 표시한 부분을 true로 고친다. 이렇게 해야지 바로 접속 확인이 가능하기 때문이다. 이제 준비는 다 끝났다.

 

 

 

Firebase 데이터를 파이썬으로 제어하기


Realtime Database 의 구조는 json을 따른다. 각 항목에 따라서 key(태그)와 값을 가진다. json 파일에 대한 자세한 설명은 내 블로그에 따로 설명해 두었다.

https://tre2man.tistory.com/159

 

카카오톡 학식봇 만들기-json 파일이란?

카카오톡 학식봇을 만들기 위해 개인적으로 json에 대한 지식 및 정리를 하기 위한 포스팅입니다. json 이란? json은 데이터 저장 및 공유를 위한 개방평 표준 포맷이다. json의 구성은 "키:값" 으로 ��

tre2man.tistory.com

 

 

파이썬을 이용해 데이터베이스에 접속해 보자. 먼저 예제 코드를 이용해 기본적인 구조를 알아보자.

 

 

1
2
3
4
5
6
7
8
9
10
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
 
 
#Firebase database 인증 및 앱 초기화
cred = credentials.Certificate('키 파일 이름')
firebase_admin.initialize_app(cred,{
    'databaseURL' : '데이터베이스 주소 입력'
})
cs

 

파이썬 파일이 있는 곳에 앞에서 받은 키 파일을 같이 담아둔다. 기본적인 설정은 다 끝났으니, 실제 값을 저장해보자. reference를 이용하여 기본 위치를 지정한 다음, key와 값을 저장한다. 아래의 예제는 한개의 key에 한개의 값을 저장하는 단순한 코드이다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
 
 
#Firebase database 인증 및 앱 초기화
cred = credentials.Certificate('키 파일 이름')
firebase_admin.initialize_app(cred,{
    'databaseURL' : '데이터베이스 주소 입력'
})
 
dir = db.reference() #기본 위치 지정
dir.update({'자동차':'기아'})
cs

 

결과

 

 

 

응용하여 조금 더 복잡한 DB를 만들어보자. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
 
 
#Firebase database 인증 및 앱 초기화
cred = credentials.Certificate('키 파일 이름')
firebase_admin.initialize_app(cred,{
    'databaseURL' : '데이터베이스 주소 입력'
})
 
dir = db.reference() 
dir.update({'자동차':['기아','현대','벤츠']})
 
dir = db.reference('이동수단/기차')
dir.update({'1번':'KTX'})
dir.update({'2번':'무궁화'})
cs

결과

 

리스트로 저장하면 key 값은 0,1...순으로 매겨진다. key 값을 제어하고 싶다면 reference를 이용해 기본 위치를 옮긴다음, update를 하나하나 지정하여 실행해야 한다. 

 

 

값을 조회하는 법은 간단하다. get 명령어로 가져올 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
 
 
#Firebase database 인증 및 앱 초기화
cred = credentials.Certificate('키 파일 이름')
firebase_admin.initialize_app(cred,{
    'databaseURL' : '데이터베이스 주소 입력'
})
 
dir = db.reference() #기본 위치 지정
print(dir.get())
 
dir = db.reference('이동수단/기차/1번')
print(dir.get())
cs

 

출력값 : 

{'이동수단': {'기차': {'1번': 'KTX', '2번': '무궁화'}}, '자동차': ['기아', '현대', '벤츠']}
KTX

 

 

간단한 사용법은 이렇고 더욱 자세한 상세한 사용법은 레퍼런스를 참조하길 바란다.

https://firebase.google.com/docs/reference/admin/python?hl=ko

 

Firebase Admin Python SDK

firebase.ml.naturallanguage.translate

firebase.google.com

 

 

반응형