技術筆記-用 python 操作 google firestore 的基本方法

更新於 發佈於 閱讀時間約 5 分鐘

1.安裝與初始化

firestore 是 google 所提供的雲端文件式資料庫服務,為各種開發工具提供了方便使用的 sdk,python 的套件名稱為 firebase-admin,用 pip 安裝後就可操作了。

pip install firebase-admin

這種安裝套件的工作只需要在專案開發初期執行一次,之後一段時間就忘了它的存在了,非常需要記錄起來。

以下程式執行初始化和授權,放在模組開頭:

import firebase_admin
import firebase_admin.firestore

cred = firebase_admin.credentials.Certificate(
'newservice/firestoreServiceAccountKey.json')
fireApp = firebase_admin.initialize_app(cred)
dbClient = firebase_admin.firestore.client()

其中「授權」的程序也是很容易忘記的,又耗費了許多力氣去回想,必須在 google cloud console IAM 管理介面,新增 service account,並匯出私鑰檔案 (xxx.json) 存在專案目錄備用,參閱「quick start」文件。

2.讀取資料

可先用 google 提供的管理介面手動新增一些資料測試使用,介面功能非常簡單直覺:

raw-image


已知 collection 和 document id,可用三行取得資料:

symbolsRef = dbClient.collection(u'symbols')
docRef = symbolsRef.document('6533.TW')
obj = docRef.get().to_dict()

# 若要檢查資料存不存在,可用以下判斷式,讓流程嚴謹,避免程式錯誤跳開。
if docRef.get().exists:
obj = docRef.get().to_dict()

取得整個 collection

objs = []
for docRef in symbolsRef.stream(): # symbolsRef.get() 也可以
objs.append(docRef.to_dict())
objs

加上一些查詢條件,或是排序

symbolsRef = dbClient.collection(u'symbols')
queryRef = symbolsRef.where("symbol", "==", "6533.TW")
objs = []
for docRef in queryRef.get():
objs.append(docRef.to_dict())
objs​

# order 的寫法如下,正序倒序,取前面幾筆或後面幾筆都沒問題
​queryRef = symbolsRef.order_by('symbol',
direction = firebase_admin.firestore.Query.DESCENDING).limit(1)
queryRef = alertRef.order_by('alertId').limit_to_last(1)

3.修改資料

已知 collection 和 document id,要把 field1 欄位值修改成 value1,也只要三行,若 field1 不存在也沒關係,該筆資料會新增此欄位;另外也可一次傳入多欄位。

symbolsRef = dbClient.collection(u'symbols')
docRef = symbolsRef.document('6533.TW')
docRef.update({'filed1':'value1'})


4.刪除資料

# 刪除文件
symbolsRef = dbClient.collection(u'symbols')
docRef = symbolsRef.document('6533.TW')
docRef.delete()

# 只刪除文件中的某個欄位
​docRef.update({'filed1':firestore.DELETE_FIELD})


5.建立資料

# 新增一筆資料,由系統自動賦予 id
symbolsRef = dbClient.collection(u'symbols')
symbolsRef.add({'field1': 'value1'})

# 新增一筆資料,由程式指定 id,則要用 set 方法
# 若該 id 的文件已經存在,則整筆資料將被取代
symbolsRef = dbClient.collection(u'symbols')
symbolsRef.document('id1').set({'field1': 'value1'})


by Newman 2023/12/26

導覽頁:紐曼的技術筆記-索引

References:




avatar-img
24會員
110內容數
漫步是一種境界。
留言
avatar-img
留言分享你的想法!

































































newman的沙龍 的其他內容
安裝完成 nodejs 後選用一個工作目錄執行 npm init,npm 會產生一個 package.json 檔案,之後為此專案安裝套件時都會記錄在此,讓專案可以很容易的重建和移植,也可設定 npm start 執行時以哪一個 js 檔當作系統入口。直接開寫了,以下我用 app.js 當作系統入口
首先安裝 python,依照 官網 的指示,下載正確的版本並執行就可,重點在以下。 虛擬環境的管理平台許多人使用 anaconda,許多教 python 的課程第一堂就是不管三七二十一先安裝再說,但我用了一陣子之後覺得它實在太笨重了,早有掙脫的想法,欣見原生的 python 已經具有虛擬環境管理模
安裝完成 nodejs 後選用一個工作目錄執行 npm init,npm 會產生一個 package.json 檔案,之後為此專案安裝套件時都會記錄在此,讓專案可以很容易的重建和移植,也可設定 npm start 執行時以哪一個 js 檔當作系統入口。直接開寫了,以下我用 app.js 當作系統入口
首先安裝 python,依照 官網 的指示,下載正確的版本並執行就可,重點在以下。 虛擬環境的管理平台許多人使用 anaconda,許多教 python 的課程第一堂就是不管三七二十一先安裝再說,但我用了一陣子之後覺得它實在太笨重了,早有掙脫的想法,欣見原生的 python 已經具有虛擬環境管理模
你可能也想看
Google News 追蹤
你是否曾使用Python進行網上爬蟲、撈取資料、分析,並將結果存進雲端資料庫? 你知道這一切可以全部發生在Google Drive裡嗎?而且,全部都是免費的!
Thumbnail
想要使用python學習程式應該要怎麼開始呢? 首先就是要下載Python(程式語言)還有Pychar(整合開發環境,IDE)這兩個軟體。 在Google的搜尋欄位打上Python下載, 點選第一個Download Python。 第二步點選Download,選擇你的電腦系統。
今天學習Git 的第一步: 取得與建立項目 Getting and Creating Projects [1]。 之前提到「儲存庫 Repository」就是儲存所有「檔案 File」的地方。 在Git 的邏輯裡,儲存庫是要儲存所有的「快照 Snapshots」。 什麼是快照
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
Thumbnail
在本篇文章中,將會設定 Cloud Run,以便每當將程式修改並推送到 GitHub 時,它都會使用 Cloud Build 自動構建和部署應用程序的最新版本。
想要開始Python語言的開發環境,有兩種常見方式,一種是下載安裝到本機端,另一種是直接在雲端執行。本文將介紹三個常見的開發工具及其安裝步驟。
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
Thumbnail
詳細解說如何在 Mac 上透過 Docker 安裝 MongoDB 社群版。包括 MongoDB Compass 的安裝與配置,以及 MongoDB Shell 的使用方法,為開發者提供 MongoDB 學習資源。
你是否曾使用Python進行網上爬蟲、撈取資料、分析,並將結果存進雲端資料庫? 你知道這一切可以全部發生在Google Drive裡嗎?而且,全部都是免費的!
Thumbnail
想要使用python學習程式應該要怎麼開始呢? 首先就是要下載Python(程式語言)還有Pychar(整合開發環境,IDE)這兩個軟體。 在Google的搜尋欄位打上Python下載, 點選第一個Download Python。 第二步點選Download,選擇你的電腦系統。
今天學習Git 的第一步: 取得與建立項目 Getting and Creating Projects [1]。 之前提到「儲存庫 Repository」就是儲存所有「檔案 File」的地方。 在Git 的邏輯裡,儲存庫是要儲存所有的「快照 Snapshots」。 什麼是快照
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
Thumbnail
在本篇文章中,將會設定 Cloud Run,以便每當將程式修改並推送到 GitHub 時,它都會使用 Cloud Build 自動構建和部署應用程序的最新版本。
想要開始Python語言的開發環境,有兩種常見方式,一種是下載安裝到本機端,另一種是直接在雲端執行。本文將介紹三個常見的開發工具及其安裝步驟。
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
Thumbnail
詳細解說如何在 Mac 上透過 Docker 安裝 MongoDB 社群版。包括 MongoDB Compass 的安裝與配置,以及 MongoDB Shell 的使用方法,為開發者提供 MongoDB 學習資源。