Firebase Admin SDK(firebase-admin)のインストールと Cloud Firestore への接続確認

概要

Python から Google Firebase の Cloud Firestore を操作するための準備を行う。Firebase Admin SDK(firebase-admin パッケージ)をインストールし、サービスアカウントの秘密鍵を使って Cloud Firestore に接続し、コレクションのデータを取得できることを確認する。

目次

関連する外部ページ

【サイト内の関連ページ】

Google Firebase 活用ガイド

firebase-admin パッケージのインストール

  1. 管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
  2. firebase-admin のインストール

    コマンドプロンプトで,次のコマンドを実行する。firebase-admin は,サーバ側から Cloud Firestore へアクセスするための公式パッケージ(Firebase Admin SDK)である。

    pip install -U --no-user firebase-admin
    

秘密鍵の準備と Cloud Firestore への接続確認

  1. サービスアカウントの秘密鍵(JSON ファイル)を準備する

    Firebase コンソールでプロジェクトを開き,秘密鍵(サービスアカウントの JSON ファイル)を生成してダウンロードする。取得手順は「Google Firebase の Cloud Firestore 基本操作ガイド」の秘密鍵の取得手順を参照する。

    ダウンロードした JSON ファイルのパスを控えておく。以降の説明では,このファイルを「serviceAccountKey.json」として解説する。

  2. Python プログラムによる接続確認
    Python プログラムの開発環境として,Jupyter Qt ConsoleSpyderPyCharmPyScripter などが利用できる。

    秘密鍵ファイル(serviceAccountKey.json)のパスは実際のパスに置き換える。次のコードは,コレクション「products」の全ドキュメントを取得して表示する(コレクションが空の場合は何も表示されない)。

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    cred = credentials.Certificate('serviceAccountKey.json')
    firebase_admin.initialize_app(cred)
    
    db = firestore.client()
    docs = db.collection('products').stream()
    for doc in docs:
        print('{} => {}'.format(doc.id, doc.to_dict()))
    

Cloud Firestore へのデータの追加と確認

次の 3件 のデータを追加する。

id 1, name orange, price 50
id 2, name apple,  price 100
id 3, name apple,  price 150
  1. データの追加

    秘密鍵ファイル(serviceAccountKey.json)のパスは実際のパスに置き換える。次のコードは,コレクション「products」に 3件のドキュメントを追加する。document() を引数なしで呼ぶと,ドキュメント ID は自動生成される。

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    cred = credentials.Certificate('serviceAccountKey.json')
    firebase_admin.initialize_app(cred)
    
    db = firestore.client()
    db.collection('products').document().set({'id': 1, 'name': 'orange', 'price': 50})
    db.collection('products').document().set({'id': 2, 'name': 'apple', 'price': 100})
    db.collection('products').document().set({'id': 3, 'name': 'apple', 'price': 150})
    
  2. 追加したデータの確認

    次のコードで,コレクション「products」の内容を取得して表示する。

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    cred = credentials.Certificate('serviceAccountKey.json')
    firebase_admin.initialize_app(cred)
    
    db = firestore.client()
    docs = db.collection('products').stream()
    for doc in docs:
        print('{} => {}'.format(doc.id, doc.to_dict()))