LoginSignup
55
47

More than 3 years have passed since last update.

[python] Firebase Realtime Databaseのはじめ方

Last updated at Posted at 2019-01-06

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にアクセスする

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

firebase.py
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関数を使って上記の図のような結果になるように更新することができます。

firebase.py

##データを更新する
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 

55
47
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
47