Firabase - bpmbox/P1_bpmchat GitHub Wiki


title: [python] Firebase Realtime Databaseのはじめ方 tags: Python Python3 Firebase 初心者 Heroku author: sai-san slide: false

#Firebase Realtime Database とは Googleの説明を引用します。無料枠があり、簡単に利用できるDBの一つです。

Firebase Realtime Database は、リアルタイムにデータを保存およびユーザー間で同期できる、クラウドホスト型 NoSQL データベースです。 新機能: Cloud Firestore(ベータ版)を使用すると、グローバルなスケールでアプリデータを保存、同期、照会することができます。 https://firebase.google.com/docs/database/?hl=ja

#install 以下のコマンドで、firebase-adminをインストールします。

$ pip3 install firebase-admin

#ルールを以下の用に変更する

image.png

{
  "rules": {
      ".read": true,
      ".write": true
  }
}

#Firebaseにアクセスする 以下のコードでアクセスし、データを追加・参照することができます。

import firebase_admin
from firebase_admin import credentials
from firebase_admin import db

cred = credentials.Certificate('./<your service account json>')

firebase_admin.initialize_app(cred, {
    'databaseURL': 'https://<your database url>',
    'databaseAuthVariableOverride': {
        'uid': 'my-service-worker'
    }
})

##databaseに初期データを追加する
users_ref = db.reference('/users')

users_ref.set({
    'user001': {
        'date_of_birth': 'June 23, 1984',
        'full_name': 'Sazae Isono'
        },
    'user002': {
        'date_of_birth': 'December 9, 1995',
        'full_name': 'Tama Isono'
        }
    })

# databaseにデータを追加する
users_ref.child('user003').set({
    'date_of_birth': 'Aug 23, 1980',
    'full_name': 'Masuo Isono'
    })

##データを取得する
print(users_ref.get())

これを実行すると以下のようにデータが保管されます。

image.png

#一部データのみ更新する データを保存後に一部のデータのみ更新したい場合があると思います。 例えば以下のようなケースです。

image.png

そのような場合はUPDATE関数を使って上記の図のような結果になるように更新することができます。


##データを更新する
updates = {}
updates['/user001/full_name'] = 'Sazae Fuguta'
users_ref.update(updates)

#HerokuにデプロイしたPython3からFirebaseにアクセスするには

pip freezeを行い、必要なモジュールをrequirements.txt化して、Heroku側に教えて上げてくださいね。


# インストール済みのpackage情報をrequirements.txtに保存
$ pip freeze > requrements.txt

#参考URL