【手順2】画像のパスを含んだデータをJSON形式で作成し、
Firestoreに一括登録する。
●Point
・この手順の中では、画像ファイルは”gs://〜”形式となっている。
・手順1で利用したサービスアカウントキーのJSONファイルは、この処理でも利用する。
●例:一括登録するJSONファイル
[
{
"No": 90001,
"Name": "Andy",
"addres": "USA",
"sex": "Male",
"photos": "gs://test-app.appspot.com/sample/90001.jpg",
},
{
"No": 90002,
"Name": "Bob",
"addres": "France",
"sex": "Male",
"photos": "gs://test-app.appspot.com/sample/90002.jpg",
},
{
"No": 90003,
"Name": "Caroline",
"addres": "Canada",
"sex": "Female",
"photos": "gs://test-app.appspot.com/sample/90003.jpg",
},
]
●Firestoreへのデータ登録プログラム(結果はfirebaseコンソールにて確認)
import firebase_admin
from firebase_admin import credentials, firestore
import json
# ##################################################################
# FIreStore Storage Image Upload
# ##################################################################
# FirebaseのサービスアカウントキーのJSONファイルのパス
cred = credentials.Certificate('test-app-firebase.json')
# Firebaseアプリの初期化
firebase_admin.initialize_app(cred)
# Firestoreクライアントの取得
db = firestore.client()
# Firestoreクライアントの取得
db = firestore.client()
# JSONファイルを読み込む
try:
with open('sampleJson.json', 'r', encoding='utf-8') as f:
# ファイルの内容を文字列として読み込む
file_content = f.read()
# 不正な改行コードを正しいものに置換する
file_content = file_content.replace('¥n', '\n')
# JSONとしてデコードする
data = json.loads(file_content)
except json.JSONDecodeError as e:
print(f'JSONDecodeError: {e}')
raise
except Exception as e:
print(f'Unexpected error: {e}')
raise
# Firestoreにデータを追加する関数
def upload_data_to_firestore(collection_name, data):
collection_ref = db.collection(collection_name)
for item in data:
doc_ref = collection_ref.document() # 自動生成されたIDを使用
doc_ref.set(item)
print('Data successfully uploaded to Firestore!')
# コレクション名とデータを指定してアップロード
if __name__ == '__main__':
upload_data_to_firestore('samplePersons', data)