孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档
孤荷凌寒自學python第五十四天使用python來刪除Firebase數據庫中的文檔
(完整學習過程屏幕記錄視頻地址在文末)
今天繼續研究Firebase數據庫,利用google免費提供的這個數據庫服務,今天主要嘗試使用firebase_admin模塊來對firebase數據庫進行刪除文檔操作
獲得成功。
一、簡單總結下今天對firebase_admin模塊對象的學習
(一)刪除一個文檔
要刪除Firebase數據庫中的一個集合下的一個文檔
只需要執行文檔對象的delete()方法。
具體用法如下:
文檔對象.delete()
通過此方法,就可以完全刪除這一文檔,并且同時文檔中的所有字段及記錄也都沒有了。
(二)刪除文檔中的某個字段的內容:
官方的文檔是這樣說的:
要從文檔中刪除特定字段,請在更新文檔時使用 FieldValue.delete() 方法。
但他的示例方法是這樣的:
city_ref = db.collection(u'cities').document(u'BJ')
city_ref.update({
u'capital': firestore.DELETE_FIELD
})
可是我在實際測試中,卻發現,使用這種方法,直接在:
firestore.DELETE_FIELD
這個地方報錯!
提示沒有DELETE_FIELD這個對象的存在。
當然我想到了解決方案:
(1)先get到指定文檔的所有記錄內容,轉換為一個字典(dict)對象
(2)將字典對象中的要刪除的那個字段(Key)鍵名鍵值對從字典對象中刪除掉。
(3)重新使用文檔對象的set()方法將修改后的字典(dict)對象覆蓋寫入文檔 對象,完成對文檔 中指定 字段的刪除操作。
(三)刪除數據庫中的一個集合
根據官方文檔 描述,要刪除數據庫中的一個集合,只要這個集合中的所有文檔 都不復存在 ,則集合就不再存在 了,那么 要刪除集合,就是說,只需要通過 循環詞句,刪除這個集合中的所有文檔 就可以了。
二、我的測試練習代碼
```
# _** coding:utf-8 _*_
# 孤荷凌寒自學Python第五十四天_連接firebase數據庫(nosql數據庫類型)第二天嘗試
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred = credentials.Certificate("ghlhfirst.json")
firebase_admin.initialize_app(cred)
db=firestore.client() #建立連接
jiheinfo=db.collection(u'ghlh') #得到集合
doc=jiheinfo.document(u'yiLfGDecALwWYw9VSoIm') #得到文檔對象
info=doc.get() #獲取文檔內容
print(u'文檔一 data: {}'.format(info.to_dict())) #轉變為字典對象后輸出
jihesub=doc.collection(u'subone') #文檔下存在的一個子集合 #此處證明,這種數據庫中的結構是可以像俄羅斯套娃一樣無限循環嵌套的。
docsub=jihesub.document(u'subonedoc') #子集合中的子文檔一
infosub=docsub.get() #獲取子文檔一中的內容
print(u'子文檔一 data: {}'.format(infosub.to_dict())) #轉變為字典對象后輸出
#-----添加文檔的方法
dictdata={
u'姓名':u'張四豐',
u'性別':u'女',
u'年齡':39,
u'愛好':
{
u'書法':u'10級',
u'計算機':u'8級',
u'英語':u'4級'
},
u'婚否':False
}
#添加一個文檔,并寫入這些數據記錄
jihesub.document(u'new201812').set(dictdata)
#---將他讀出來
docsub2=jihesub.document(u'new201812') #子集合中的子文檔二
infosub2=docsub2.get() #獲取子文檔二的內容
print(u'子文檔二data: {}'.format(infosub2.to_dict())) #轉變為字典對象后輸出
#追加數據到subonedoc這個文檔中
#docsub.update(dictdata)
#重新讀出追加后的新文檔的情況
#infosub=docsub.get() #獲取子文檔一中的內容
#print(u'Document data: {}'.format(infosub.to_dict())) #轉變為字典對象后輸出
#修改子文檔二
#docsub2.update(dictdata)
#刪除一個字段
#操作失敗
#重新讀
infosub2=docsub2.get() #獲取子文檔二的內容
print(u'子文檔二修改后data: {}'.format(infosub2.to_dict())) #轉變為字典對象后輸出
```
#今天專門寫的刪除指定文檔的一個Py文件:
```
# _** coding:utf-8 _*_
# 孤荷凌寒自學Python第五十四天_連接firebase數據庫(nosql數據庫類型)第五天嘗試
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred = credentials.Certificate("ghlhfirst.json")
firebase_admin.initialize_app(cred)
db=firestore.client() #建立連接
jiheinfo=db.collection(u'ghlh') #得到集合
doc=jiheinfo.document(u'yiLfGDecALwWYw9VSoIm') #得到文檔對象
jihesub=doc.collection(u'subone') #文檔下存在的一個子集合 #此處證明,這種數據庫中的結構是可以像俄羅斯套娃一樣無限循環嵌套的。
docsub=jihesub.document(u'subonedoc') #子集合中的子文檔一
docsub2=jihesub.document(u'new201812') #子集合中的子文檔二
docsub2.delete() #刪除這個文檔
```
朋友們,不知不覺,2018年即將過去,在2018年這似乎轉瞬即逝的日子里,感恩有你們的支持與陪伴!
在此向關注本欄目與關心喜馬拉雅未來書屋頻道的朋友們道一聲:新年快樂!祝愿在即將到來的2019年,大家心想事成,開心快樂每一天。
——————————
今天整理的學習筆記完成,最后例行說明下我的自學思路:
根據過去多年我自學各種編程語言的經歷,認為只有真正體驗式,解決實際問題式的學習才會有真正的效果,即讓學習實際發生。在2004年的時候我開始在一個鄉村小學自學電腦 并學習vb6編程語言,沒有學習同伴,也沒有高師在上,甚至電腦都是孤島(鄉村那時還沒有網絡),有的只是一本舊書,在痛苦的自學摸索中,我找到適應自己零基礎的學習方法:首先是每讀書的一小節就作相應的手寫筆記,第二步就是上機測試每一個筆記內容是否實現,其中會發現書中講的其實有出入或錯誤,第三步就是在上機測試之后,將筆記改為電子版,形成最終的修訂好的正確無誤的學習筆記 。
通過反復嘗試錯誤,在那個沒有分享與交流的黑暗時期我摸黑學會了VB6,爾后接觸了其它語言,也曾聽過付費視頻課程,結果發現也許自己學歷果然太低,就算是零基礎的入門課程,其實也難以跟上進度,講師的教學多數出現對初學者的實際情況并不了解的情況,況且學習者的個體也存在差異呢?當然更可怕的是收費課程的價格往往是自己難以承受的。
于是我的所有編程學習都改為了自學,繼續自己的三步學習筆記法的學習之路。
當然自學的最大問題是會走那么多的彎路,沒有導師直接輸入式的教學來得直接,好在網絡給我們帶來無限搜索的機會,大家在網絡上的學習日志帶給我們共享交流的機會,而QQ群等交流平臺、網絡社區的成立,我們可以一起自學,互相批評交流,也可以獲得更有效,更自主的自學成果。
于是我以人生已過半的年齡,決定繼續我的編程自學之路,開始學習python,只希望與大家共同交流,一個人的獨行是可怕的,只有一群人的共同前進才是有希望的。
誠摯期待您的交流分享批評指點!歡迎聯系我加入從零開始的自學聯盟。
這個時代互聯網成為了一種基礎設施的存在,于是本來在孤獨學習之路上的我們變得不再孤獨,因為網絡就是一個新的客廳,我們時刻都可以進行沙龍活動。
非常樂意能與大家一起交流自己自學心得和發現,更希望大家能夠對我學習過程中的錯誤給予指點——是的,這樣我就能有許多免費的高師了——這也是分享時代,社區時代帶來的好福利,我相信大家會的,是吧!
根據完全共享的精神,開源互助的理念,我的個人自學錄制過程是全部按4K高清視頻錄制的,從手寫筆記到驗證手寫筆記的上機操作過程全程錄制,但因為4K高清文件太大均超過5G以上,所以無法上傳至網絡,如有需要可聯系我QQ578652607對傳,樂意分享。上傳分享到百度網盤的只是壓縮后的720P的視頻。
我的學習過程錄像百度盤地址分享如下:(清晰度:1280x720)
鏈接:https://pan.baidu.com/s/15-9K_Nncsc91_LDIpKJLVw
提取碼:n9d4
bilibili:
https://www.bilibili.com/video/av39276634/
喜馬拉雅語音筆記:
https://www.ximalaya.com/keji/19103006/149147084
?
轉載于:https://www.cnblogs.com/lhghroom/p/10203584.html
總結
以上是生活随笔為你收集整理的孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 187.重复的DNA序
- 下一篇: centos7 yum 安装lnmp