孤荷淩寒自學python第六十二天學習mongoDB的基本操作並進行簡單封裝1
孤荷淩寒自學python第六十二天學習mongoDB的基本操作並進行簡單封裝1
(完整學習過程屏幕記錄視頻地址在文末)
今天是學習mongoDB數據庫的第八天。
今天開始學習mongoDB的簡單操作,並對一些可能反復經常使用的操作進行簡單的封裝。
今天成功了解並實測完成了向mongoDB數據庫中添加記錄的操作,詳細學習過程見屏幕錄屏學習過程。
測試代碼如下:
【ceshi.py】
```
from pymongo import MongoClient
import datetime
import _mty
import _mf
import _mre
import _cl
import _mmongo
def msgbox(info,titletext=‘孤荷淩寒的對話框QQ578652607‘,style=0,isShowErrMsg=False):
return _mty.msgboxGhlh(info,titletext,style,isShowErrMsg)
def thirdConnect():
#--獲取授權用戶和密碼:
#stru=_mf.readAllTextFromTxtFileGhlh(‘u.txt‘)
#strp=_mf.readAllTextFromTxtFileGhlh(‘p.txt‘)
#得到連接對象
client=_mmongo.conMongoDb("localhost")
#-- 獲取數據庫的命名標識
db=client.ghlhsecond
#--獲取其中的一個集合對象
jh=db.onejh
#----添加記錄
dicA={
u‘姓名‘:u‘張三2‘,
u‘性別‘:u‘男‘,
u‘年齡‘:36,
u‘婚否‘:True
}
dicB={
u‘姓名‘:u‘李四2‘,
u‘性別‘:u‘女‘,
u‘年齡‘:32,
u‘婚否‘:False
}
lstA=[dicA,dicB]
#------
isok=_mmongo.addNewData(jh,lstA)
msgbox(str(isok))
#--查詢這個集合其中的記錄
data=jh.find()
for i in data:
msgbox(str(i))
thirdConnect()
```
今天開始構建一個專門的自定義的模塊來存放自己簡單封裝的一些函數等:
【_mmongo.py】
```
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#此模塊用於封閉mongodb數據庫操作的一些方法
import string
import pymongo
import _mty
import _cl #常用常量模塊
import _mre
mmongoErrString=‘‘ #供其它模塊使用的全局變量了,實時保存了各函數執行時的錯誤信息
def msgbox(info,titletext=‘孤荷淩寒的mongodb模塊對話框QQ578652607‘,style=0,isShowErrMsg=False):
return _mty.msgboxGhlh(info,titletext,style,isShowErrMsg)
#獲取一個針對mongodb數據庫服務的client對象的方法函數
def conMongoDb(serveraddress,strusername=‘‘,strpassword=‘‘,strauthMechanism=‘SCRAM-SHA-1‘,isconnect=False,isShowMsg=False):
‘‘‘
根據傳遞進函數的mongoDB數據服務器地址來連接,並返回一個client對象
‘‘‘
try:
client=None
if strusername==‘‘ or strpassword==‘‘:
#無驗證連接方式:
client=pymongo.MongoClient(serveraddress)
else:
#有驗證的連接:
client=pymongo.MongoClient(serveraddress,username=strusername,password=strpassword,authMechanism=strauthMechanism,connect=isconnect)
#-----------------------------------
return client
except Exception as e:
mmongoErrString=‘連接MongoDB數據庫【‘ + serveraddress + ‘】時出錯:‘ + str(e) + ‘\n此函數由【孤荷淩寒】創建,QQ578652607‘
if isShowMsg==True:
msgbox(mmongoErrString)
return None
else:
pass
finally:
pass
#向指定的集合中添加記錄
def addNewData(objjh,objdata,isShowMsg=False):
‘‘‘
通過指定要添加記錄的集合對象和要添加的數據對象(字典或字典組成的列表)來向指定集合添加記錄
#objjh 要操作的集合對象
#objdata 要添加的數據,如果傳入一個字典對象則是添加一條記錄;如果傳入一個由多個字典組合成的列表對象,就是同時添加多條記錄。
‘‘‘
try:
r=objjh.insert(objdata)
if r==None:
return False
else:
return True
except Exception as e:
mmongoErrString=‘向集合中添加記錄時出錯:‘ + str(e) + ‘\n此函數由【孤荷淩寒】創建,QQ578652607‘
if isShowMsg==True:
msgbox(mmongoErrString)
return False
else:
pass
finally:
pass
```
學習感受:
1.
mongoDB現在的版本,向一個集合中新增記錄時,已不推薦使用insert()方法,而推薦使用insert_one()方法和insert_many()方法。
但此處使用舊方法比較省事,且也確實還可以繼續使用,因此就繼續使用了。
2.
與firebase數據庫不同,mongoDB的操作已經完全忽略了document對象,所有相關操作都是在collection對象中操作的。
3.
使用集合的新增方法後,會自動為記錄所在的document對象添加一個_id值,並直接加入文檔的記錄中,這個自動添加的_id值,是一串長的字符串編碼。
——————————
今天整理的學習筆記完成,最後例行說明下我的自學思路:
根據過去多年我自學各種編程語言的經歷,認為只有真正體驗式,解決實際問題式的學習才會有真正的效果,即讓學習實際發生。在2004年的時候我開始在一個鄉村小學自學電腦 並學習vb6編程語言,沒有學習同伴,也沒有高師在上,甚至電腦都是孤島(鄉村那時還沒有網絡),有的只是一本舊書,在痛苦的自學摸索中,我找到適應自己零基礎的學習方法:首先是每讀書的一小節就作相應的手寫筆記,第二步就是上機測試每一個筆記內容是否實現,其中會發現書中講的其實有出入或錯誤,第三步就是在上機測試之後,將筆記改為電子版,形成最終的修訂好的正確無誤的學習筆記 。
通過反復嘗試錯誤,在那個沒有分享與交流的黑暗時期我摸黑學會了VB6,爾後接觸了其它語言,也曾聽過付費視頻課程,結果發現也許自己學歷果然太低,就算是零基礎的入門課程,其實也難以跟上進度,講師的教學多數出現對初學者的實際情況並不了解的情況,況且學習者的個體也存在差異呢?當然更可怕的是收費課程的價格往往是自己難以承受的。
於是我的所有編程學習都改為了自學,繼續自己的三步學習筆記法的學習之路。
當然自學的最大問題是會走那麽多的彎路,沒有導師直接輸入式的教學來得直接,好在網絡給我們帶來無限搜索的機會,大家在網絡上的學習日誌帶給我們共享交流的機會,而QQ群等交流平臺、網絡社區的成立,我們可以一起自學,互相批評交流,也可以獲得更有效,更自主的自學成果。
於是我以人生已過半的年齡,決定繼續我的編程自學之路,開始學習python,只希望與大家共同交流,一個人的獨行是可怕的,只有一群人的共同前進才是有希望的。
誠摯期待您的交流分享批評指點!歡迎聯系我加入從零開始的自學聯盟。
這個時代互聯網成為了一種基礎設施的存在,於是本來在孤獨學習之路上的我們變得不再孤獨,因為網絡就是一個新的客廳,我們時刻都可以進行沙龍活動。
非常樂意能與大家一起交流自己自學心得和發現,更希望大家能夠對我學習過程中的錯誤給予指點——是的,這樣我就能有許多免費的高師了——這也是分享時代,社區時代帶來的好福利,我相信大家會的,是吧!
根據完全共享的精神,開源互助的理念,我的個人自學錄制過程是全部按4K高清視頻錄制的,從手寫筆記到驗證手寫筆記的上機操作過程全程錄制,但因為4K高清文件太大均超過5G以上,所以無法上傳至網絡,如有需要可聯系我QQ578652607對傳,樂意分享。上傳分享到百度網盤的只是壓縮後的720P的視頻。
我的學習過程錄像百度盤地址分享如下:(清晰度:1280x720)
鏈接:https://pan.baidu.com/s/1PmhAi-Wdj0X2Cr0wlIFo4A
提取碼:lk2z
Bilibili:
https://www.bilibili.com/video/av40171032/
喜馬拉雅語音筆記:
https://www.ximalaya.com/keji/19103006/151144896
孤荷淩寒自學python第六十二天學習mongoDB的基本操作並進行簡單封裝1