Pythonを使用してFirebase Cloud Firestoreにjson形式データを書き込む方法

Pythonを使用してFirebase Cloud Firestoreにjson形式データを書き込む方法

今回はjson形式のデータをFirebase Cloud Firestoreに超簡単に書き込む方法について解説していきたいと思います.使用言語はPythonになります.できるだけ公式ドキュメントに沿うようにコードを書いていきたいと思いますので是非読んでいってくださったら幸いです.

はじめに

最近コロナの影響で毎日が春休みという感じです.そして休みとなると何もやる気が出ずにじさんじライバーさんの配信を見ながらダラダラと毎日を過ごしてしまっています.そんな中まぁ研究ではやらないことを少しずつやっていきたいなと思い今回はオンラインデータベースに関する操作について解説していきます.使用するオンラインデータベースは無料データベース界の救世主Firebase Cloud Firestoreとなります.まぁやはり天下のGoogleさんということで無料のデータベースということで今回は使っていきます.そして実際にデータベースからデータを読み込んで操作をする際にはSwiftやJSなどフロントサイドの言語が主になるでしょうがデータベースの作成やデータの更新などは使いやすい言語であるPythonを使用していきたいと思います.また,データの形式としてはjson方式のデータをデータベースに保存していくということで早速やっていきましょう.

Firebaseの準備

まずはFirebaseの使用登録をしてください.公式サイトはこちらになります.登録ができればプロジェクトを生成してコンソール画面にログインしてください.私の場合プロジェクトを選択した後以下のような画面に遷移します.

Imgur

そして次はいよいよデータベースを操作していきます.プロジェクトのホーム画面から画像のようにCloud Firestoreを選択してデータベースを生成してください.設定はまぁ今回はテストですのでロケーションとかも適当でいいかと思います.

Imgur

Imgur

てな感じでFirebase側での設定は完了しました.では次にデータベースを操作するための秘密鍵を取得していきましょう.

秘密鍵の取得

こいつがないとデータベースは基本的に操作不可能となっています.そのため秘密鍵をダウンロードした後は決して誰にもアクセスされないように注意して保管するようにしましょう.保管場所は今回のコードを生成する場所でいいかと思います.Firebaseの設定からサービスアカウントへ進み新しい秘密鍵の生成を行ってください.これで準備は完了です.早速データベースをいじっていきましょう.

Imgur

データベースにデータを書き込む

それではいよいよPythonからデータベースにデータを書き込んでいきましょう.

ライブラリのインストール

まずは必要なライブラリを以下のコマンドからインストールしてみてください.

pip install --upgrade firebase-admin

Cloud Firestoreの初期化

ライブラリをインストールした後は早速Cloud Firestoreの初期化を行っていきましょう.

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

# Use a service account
cred = credentials.Certificate('path/to/serviceAccount.json')
firebase_admin.initialize_app(cred)

db = firestore.client()

データを追加する

初期化すればもう準備は完了です.次に簡単なデータを追加していってみましょう.

doc_ref = db.collection(u'users').document(u'alovelace')
doc_ref.set({
    u'first': u'Ada',
    u'last': u'Lovelace',
    u'born': 1815
})

Cloud Firestoreではドキュメントにデータを保存します.そしてドキュメントはコレクションに保存されるという構造になっています.今回の場合コレクションがusersであり,ドキュメントはalovelaceとなります.また,異なるドキュメントは異なるデータ構造を持つことも可能です.同じusersコレクションに以下のドキュメントを追加してみましょう.

doc_ref = db.collection(u'users').document(u'aturing')
doc_ref.set({
    u'first': u'Alan',
    u'middle': u'Mathison',
    u'last': u'Turing',
    u'born': 1912
})

このドキュメントにはalovelaceにはなかったkey-valueのペアである'middle'が追加されています.このように異なる情報セットも持つことができるようになっているので便利ですね.
また,これらのコードを実行した後は以下の画像のようにCloud Firestoreにデータが追加されているはずです.

Imgur

jsonデータの追加

それでは最後にjsonデータを追加していっちゃいましょう.今回はグラブルの武器データをデータベースに格納していきたいと思いますのでそのjsonファイルを使用しています.

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import json

cred = credentials.Certificate('./guraburuculc-firebase-adminsdk-743hy-c3ee22a26f.json')
firebase_admin.initialize_app(cred)

db = firestore.client()

json_open = open('armData.json', 'r')
json_load = json.load(json_open)

for arm in json_load.values():
    doc_ref = db.collection(u'arms').document(arm['ja'])
    doc_ref.set(arm)

実行すればこんな感じで武器リストが追加されているはずです.ただ,Cloud Firestoreはデフォルトでコレクションのkey値がアルファベット順で並び替えられてしまうようですのでその点のみ注意しておきましょう.

さいごに

さて,これでみなさんもCloud Firestoreを自由自在に使えるようになったはずです.次はこのデータベースのデータをSwiftなどのフロントエンド言語で読み込む方法などについて解説していきたいですね.それでは今回はこの辺で.

参考サイト

https://qiita.com/Mikumirai/items/f8a2ead6a6a1a4f57df8
https://firebase.google.com/docs/database/rtdb-vs-firestore?hl=ja
https://firebase.google.com/docs/firestore?authuser=0

0 件のコメント :

コメントを投稿