「學習日誌」Cloud Firestore 基本新增、查詢、刪除初體驗 – Python

第一次接觸到 Firebase 是在一年前,想說寫個 Line_Bot 的遊戲,順便練習 Class 相關用法,不過當時選用的語言是 Javascript,所以使用的架構是 nodeJS,可惜就敗在非同步(Async)、同步(Sync),處理上令人筋疲力盡,到了最後熱忱燃燒殆盡,這次回來之後發現 Firebase 除了原先 Realtime Database 還多了 Cloud Firestore,就讓我們一探究竟吧。


前言

本篇文章會偏向比較應用層面,並不會有太多資料庫的相關說明帶入其中,並且使用 Python 程式語言進行操作。

什麼 Firebase?

Firebase 雲訊息傳遞(FCM),前身為 Google  雲端通訊(GCM),是一項針對 Android、iOS 及網路應用程式的訊息與通知的跨平台解決方案,目前可免費使用。[1] 該服務由Google擁有的Firebase公司提供。Firebase已於2014年10月21日宣布被Google收購,價格未公布。[2]Google 雲端通訊的官方網站現已指向Firebase雲訊息傳遞,視作新版Google 雲端通訊。[wiki]

Realtime Database

Firebase 的基礎服務之一,提供各式各樣的資料儲存,儲存方式比就像是 Json 的模式,從下圖簡單的範例可以粗略了解儲存的形式。

Cloud Firestore

新一代的儲存服務,具備更高性能的運作架構,但目前還是在測試階段,Cloud Firestore 與 Realtime 皆屬個體,資料互不相通,儲存的方式也略有不同,Firestore 儲存的方式為「集合->文件->集合…」。

  • 集合: 指向文件。
  • 文件: 指向集合,並且可以設置資料欄位。

看文字有點抽象對嗎? 下圖為無聊所寫的 Line_Bot 井字遊戲的資料庫狀態。

Firestore 操作

基礎環境設定

基礎設定包含安裝套件、設置 API_Key。

安裝套件

首先透過 pip 指令來安裝相關的 Python 套件(firebase-admingoogle-cloud-firestore)。

$ pip install firebase-admin google-cloud-firestore

獲取 Firebase API_Key

首先至 Firebase 申請專案,並且下載 API_Key,這邊的專案申請我就直接帶過了,透過連結至 Firebase 之後,點擊在「Project Overview」一旁的小齒輪,接著點選「使用者與權限」。

接著在上頭的選單中點選「服務帳戶」,即可看到下方的「產生新的私密金鑰」。

點擊之後會跳出注意事項,確認後下載 API_Key。

接著加入以下程式碼,並將 Json 路徑「’path/to/serviceAccountKey.json’」改為你自己的。

import firebase_admin 
from firebase_admin import credentials 
cred = credentials.Certificate('path/to/serviceAccountKey.json') 
default_app = firebase_admin.initialize_app(cred)

新增

新增資料的方法有兩個。

  1. 先將字典存入變數再透過 set 方法寫入到資料庫。
  2. 直接在 set 方法內傳入字典的內容寫入到資料庫。

更新

查詢

刪除

此部分需要注意的是,只能夠單一刪除「文件」,集合不能夠刪除。

如果需要刪除整個集合可以使用下列方法來進行刪除。

原理: 當一個集合底下沒有文件時,集合會自行移除,所以先查詢要刪除的集合內的所有文件名稱,再將文件一一刪除即可,代碼如下。

參考資料:

https://firebase.google.com/docs/admin/setup

https://googlecloudplatform.github.io/google-cloud-python/latest/index.html


發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料