LoginSignup
2
1

導入

今回はFirebaseのNoSQLのデータストアであるFireStoreに直接データを挿入していきます。
JSONファイルを用意し、今回のソースを実行するだけでFireStoreにデータが挿入できます。
コンソールからデータを1つ1つ作成するよりも、早くて便利です。

手順

秘密鍵の取得

Firebaseの操作をPC上で実施するため、秘密鍵を取得する必要があります。
まず、Firebaseのコンソールを開き、FireStoreにデータを挿入したいプロジェクトを開きます。

その画面から、以下の画面のように「1.プロジェクトの設定」 → 「サービスアカウント」 → 「秘密鍵を生成」をクリックしていき、ポップアップ内で「キーを生成」をクリックすると、秘密鍵がJSON形式でDLされます。

以下、この秘密鍵はsecret.jsonとします。

アップロードデータの作成

以下のようにJSONファイルでデータを作成しておきます。
今回は例として動物の情報を挿入したいと思います。

upload_data.json
[
    {
        "species": "Lion",
        "habitat": "Savanna",
        "size": 250
    },
    {
        "species": "Penguin",
        "habitat": "Antarctica",
        "size": 50
    },
    {
        "species": "Sheep",
        "habitat": "Grassland",
        "size": 120
    }
]

今回は「animal」コレクションに対して、idがspeciesであり、habitatとsizeの情報を持つデータをFireStoreに格納するものとします。

Pythonコード(データアップロード処理)

data_uploader.py
import firebase_admin
import json
from firebase_admin import credentials, firestore

SECRET_KEY_PATH = '/path/to/secret.json'
DATA_FILE_PATH = '/path/to/upload_data.json'

COLLECTION_NAME='animal'

cred = credentials.Certificate(SECRET_KEY_PATH)
firebase_admin.initialize_app(cred)

db = firestore.client()

# Data
animal_data = open(DATA_FILE_PATH, 'r')
animal_data_load = json.load(animal_data)
for d in animal_data_load:
    # IDとするためspeciesを取得
    species = d["species"]
    # それ以外はJSON形式でdataとして保持
    data = {
        "habitat": d["habitat"],
        "size": d["size"]
    }
    # documentの引数にIDとなるspeciesを、setにdataを設定している
    db.collection(COLLECTION_NAME).document(species).set(data)

実行結果

上記ソースを実行すると、FireStoreにデータが格納されます。

firestore_result.png

終わりに

今回はFirebaseのNoSQLデータベースであるFirestoreにJSONファイルのデータをコンソールを介さず、直接挿入する方法について紹介しました。
ご参考にしてもらえたら幸いです。

2
1
0

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
2
1