PythonでFirebaseのRealtime Databaseにアクセスする
個人開発でAPIのデータを作成するためにPythonでFirebaseにアクセスしたので備忘録としてソースコードをまとめます。
Firebaseのデータベースについて
もう説明不要なくらいに有名になったFirebaseさんですが、今の所2種類のデータベースがありますので 簡単に説明します。 これらのデータベースの説明はネットで検索すればたくさんの情報が得られます。
Firebase Realtime Database
データをNoSQL データベースに保存することができて、複数のユーザーで同期することができるデータベース。 オフラインでは端末のローカルのキャッシュに保存され、オンラインになったタイミングで同期される。
Cloud Firestore
Firebase Realtime Database と似たNoSQL データベース。 上述のFirebase Realtime Databaseと同じような感じ。
今回はこちらのデータベースにアクセスしますが、今後は後述するCloud Firestoreがメジャーになるような感じらしいです。
firebase-admin のインストール
pythonでFirebaseの操作を便利にできるfirebase-admin
をpipコマンドでインストールします。
pip3 install firebase-admin
Firebaseにアクセスする
これを参考にしてソースコードを作成する
基本形
import firebase_admin from firebase_admin import credentials from firebase_admin import db cred = credentials.Certificate('./[サービスアカウントの秘密鍵のjsonファイル名]') firebase_admin.initialize_app(cred, { 'databaseURL': 'https://[Firebase のDatabaseのURL]', 'databaseAuthVariableOverride': { 'uid': 'my-service-worker' } })
サービスアカウントの秘密鍵のjsonファイル名 の取得方法
Firebaseにアクセスします。
https://console.firebase.google.com/
プロジェクトがなければ新しく作成する。とりあえず、管理画面まで進みます。
設定画面の「プロジェクトの設定」を選択する
リソースのロケーションが聞かれるときがあると思うので東京リージョンの「asia-northeast1」を選択する。
pythonを選択して、「新しい秘密鍵を生成する」ボタンをタップする。
タップするとjsonファイルをダウンロードできる。
このjsonを同じpythonファイルのディレクトリにまとめておく。
jsonファイル名が[サービスアカウントの秘密鍵のjsonファイル名]
になる。
[Firebase のDatabaseのURL]は下のスクリーンショットの赤枠のURLを使う
import firebase_admin from firebase_admin import credentials from firebase_admin import db cred = credentials.Certificate('XXXX-firebase-adminsdk-sv1af-f0b31ee7e2.json') firebase_admin.initialize_app(cred, { 'databaseURL': 'https://YYYY.firebaseio.com/', 'databaseAuthVariableOverride': { 'uid': 'my-service-worker' } })
XXXとYYYYにそれぞれ値をセットするとFirebaseへアクセスすることができるようになる。
questions のreferenceにアクセスする
quiz_ref = db.reference('questions')
データを保存する
quiz_ref.child('question001').set({ 'sentence': 'This () a pen', 'a': 'are', 'b': 'is', 'c': 'were', 'd': 'was', 'answer': 'b' })
これでpythonコマンドを実行するとデータを保存できます。