PythonとFireStoreの接続

ツイート
2021年07月16日
2021年07月22日

ポイント

Firebaseファイルの切り出し

lib/firebase.py
import firebase_admin from firebase_admin import credentials, firestore # HACK: 下記環境変数を設定しないとエラーになる import os os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = './serviceAccount.json' cred = credentials.Certificate('./serviceAccount.json') firebase_admin.initialize_app(cred) db = firestore.Client()
py
from lib.firebase import db

FireStoreに存在チェックについて

SQLでいうところの、ユニーク制限についても気になるところ。また、できないのであれば頻繁にデータパッチを行うことになるので、まとめていきたい。

FireStore Relation

存在チェック 基本形

py
doc_ref = db.collection(u'articles').document(doc_id) doc = doc_ref.get() if doc.exists: logging.info(Found) else: logging.info(Not Found)

存在チェック limit() etc

もっと良い方法がないか考え中

py
websites_ref = db.collection(u'websites').where(u'url', u'==', website_url).limit(1) website_docs = websites_ref.stream() # HACK: Generator型のempty checkがあれば、そちらで条件式を書く is_website = False for website_doc in website_docs: if website_doc.exists: is_website = True

追加

py
website_ref = db.collection(u'websites').document() website_ref.set({ u'url': website_url, }) doc_ref = db.collection(u'articles').document() doc_ref.set({ u'website_id': website_ref, })

参考