Python學(xué)習(xí)筆記6——使用MongoDB數(shù)據(jù)庫

一、如何在Python中使用MongoDB數(shù)據(jù)庫。

在Python中使用MongoDB的方法,其實(shí)和我們平時(shí)使用EXCEL的方法相類似。當(dāng)使用EXCEL時(shí)會(huì)經(jīng)歷以下步驟:①對(duì)EXCEL進(jìn)行命名;②在EXCEL中增加sheet工作簿;③輸入數(shù)據(jù);④對(duì)數(shù)據(jù)進(jìn)行分析,以表格、圖像等方式展現(xiàn)數(shù)據(jù)。

類似的,在使用MongoDB時(shí)也同樣會(huì)經(jīng)歷相似的四步:①給數(shù)據(jù)庫命名;②在文件下創(chuàng)建表單;③將數(shù)據(jù)放入數(shù)據(jù)庫中;④展示數(shù)據(jù)庫中的數(shù)據(jù)。

在進(jìn)行以上的步驟之前,還需要完成兩個(gè)準(zhǔn)備工作:

1)要想使用MongoDB同樣需要先引入第三方庫,和引入Request的方法一樣,首現(xiàn)輸入:import pymongo

2)與MongoDB客戶端進(jìn)行連接,輸入:client = pymongo.MongoClient('localhost',27017),其中l(wèi)ocalhost表示是在本地創(chuàng)建創(chuàng)建數(shù)據(jù)庫,27017表示本地端口(如果將MongoDB部署在網(wǎng)絡(luò)環(huán)境中,端口會(huì)有所改變)。

1.給數(shù)據(jù)庫命名

輸入的代碼為:A1= client['A2'],其中A1為在Python中的變量名稱,A2為對(duì)應(yīng)放入MongoDB數(shù)據(jù)庫中的名稱,為了便于管理,通常將兩者取同樣的名稱。如要爬取knewone的數(shù)據(jù),可以將數(shù)據(jù)庫命名為knewone,代碼寫為:knewone = client['knewone']。

2.在文件下創(chuàng)建表單

輸入的代碼為:B1= A1['B2'],這段代碼可以理解為在剛才創(chuàng)建的文件下創(chuàng)建表單。其中B1為Python中的變量名稱,B2為剛才創(chuàng)建文件的表單名稱。同樣的道理,為了方便,B1和B2的名稱最好相同。為了與EXCEL進(jìn)行類比,在寫代碼的過程中獲得熟悉感,可以將代碼寫為sheet1 = knewone['sheet1']。

3.將數(shù)據(jù)放入數(shù)據(jù)庫中

輸入的代碼為:B1.insert_one(data),其中B1為創(chuàng)建的表單,data為我們抓取的數(shù)據(jù),insert() 函數(shù)用于將指定對(duì)象插入列表的指定位置。

insert()方法語法:list.insert(index, obj)

index -- 對(duì)象obj 需要插入的索引位置。

obj -- 要插入列表中的對(duì)象。

4.展示數(shù)據(jù)庫中的數(shù)據(jù)

在之前Python學(xué)習(xí)筆記5中,已經(jīng)安裝了mongo插件,這個(gè)插件就是幫助我們直觀地去觀察所存儲(chǔ)的數(shù)據(jù)。

就如使用EXCEL一樣,我們通常會(huì)去篩選我們需要的數(shù)據(jù)和信息,在MongoDB中,常用的條件操作符有:

$gt: (>) 大于 ?-?

$lt :(<) 小于 -?

$gte :(>=) 大于等于 -?

$lte :(<= ) 小于等于 -?

lt表示less than

,gt表示greater than,e表示equal,n表示not。

通過以上條件操作符,便可從眾多數(shù)據(jù)中篩選出我們所需要的信息。

二、實(shí)戰(zhàn)

存儲(chǔ)學(xué)習(xí)筆記3中所爬取的小豬短租相關(guān)數(shù)據(jù),并從中篩選出價(jià)格小于等于300的數(shù)據(jù)。

1.導(dǎo)入pymongo第三方庫

2.給數(shù)據(jù)庫命名并創(chuàng)建表單

創(chuàng)建一個(gè)名字為xiaozhu_bj的數(shù)據(jù)庫,并在數(shù)據(jù)庫中創(chuàng)建一個(gè)名字為sheet1的表單。

3.插入數(shù)據(jù)

將抓取的data數(shù)據(jù)存入sheet1中。

在Pycharm右側(cè)的Mongo Explorer中,選擇xiaozhu_bj數(shù)據(jù)庫中的sheet1表單,便能查看所有存儲(chǔ)數(shù)據(jù)。

存入數(shù)據(jù)庫中的數(shù)據(jù)如下:

4.篩選出價(jià)格小于等于300的數(shù)據(jù)

利用for循環(huán),篩選出價(jià)格≤300的數(shù)據(jù)。

如果輸出的數(shù)據(jù)為空的情況,原因是在之前爬取數(shù)據(jù)時(shí),沒有定義價(jià)格的數(shù)據(jù)類型,需要將價(jià)格數(shù)據(jù)定義為整數(shù)后,才能進(jìn)行大小判定。

最終篩選出的數(shù)據(jù)結(jié)果如下:

完整代碼如下:

總結(jié):

1.在Python中使用MongoDB數(shù)據(jù)庫,就猶如我們平常使用EXCEL,通常需要經(jīng)歷數(shù)據(jù)庫命名、創(chuàng)建表單、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)展示4步;

2.MongoDB中常見的條件操作符有:$gt(>) 、$lt :(<) 、$gte :(>=) 、$lte :(<= ) ;

3.需要注意的坑:在篩選數(shù)據(jù)時(shí),需要先將爬取的數(shù)據(jù)定義為整數(shù)后,才能進(jìn)行大小判定。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,822評(píng)論 6 427
  • 環(huán)境管理管理Python版本和環(huán)境的工具。p–非常簡(jiǎn)單的交互式python版本管理工具。pyenv–簡(jiǎn)單的Pyth...
    MrHamster閱讀 3,949評(píng)論 1 61
  • 轉(zhuǎn)自鏈接 2.3.5 IF函數(shù) 2.3.6 CountIf和SumIf函數(shù) 2.3.7 Lookup函數(shù) 2.3....
    腿毛褲閱讀 13,193評(píng)論 0 0
  • 年初趴在書桌上寫新年計(jì)劃的情景還歷歷在目,如今2016年就要結(jié)束了。這一年像去年一樣,發(fā)生了好多事情,可每件事似乎...
    柳禹閱讀 190評(píng)論 0 0
  • yoyo會(huì)說的第二個(gè)單詞 apple,很清晰,是在媽媽的手勢(shì)下自己說出,之后又說了banana,哈哈 第一個(gè)單詞 ...
    星空下的悠游閱讀 162評(píng)論 0 0

友情鏈接更多精彩內(nèi)容