最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

[Quant 2.1] 通過pymongo連接MongoDB線上數(shù)據(jù)庫以及一些簡單操作

2022-07-09 15:11 作者:安平生一人好_  | 我要投稿

MongoDB是一種Nosql數(shù)據(jù)庫管理程序。這一次淺嘗一下通過MongoDB創(chuàng)建線上數(shù)據(jù)庫。并通過pymongo對(duì)線上數(shù)據(jù)庫進(jìn)行查找、刪除、更新等基本操作。電腦系統(tǒng)是MacOS。

原教學(xué)視頻鏈接:

https://www.youtube.com/watch?v=qWYx5neOh2s&list=RDCMUCbXgNpp0jedKWcQiULLbDTA&start_radio=1&rv=qWYx5neOh2s&t=2290


1. MongoDB的安裝

網(wǎng)址如下,要利用brew指令在mac的terminal中安裝,我不贅述了,鏈接如下

https://www.mongodb.com/docs/v4.4/tutorial/install-mongodb-on-os-x/

安裝之后,我們應(yīng)該是可以直接在terminal建立本地的新數(shù)據(jù)庫并寫入數(shù)據(jù)的。但是這樣做相對(duì)麻煩,所以我們可以下載MongoDB的GUI - MongoDB compass。這樣在操作本地?cái)?shù)據(jù)庫的時(shí)候會(huì)更加方便。安裝鏈接如下

https://www.mongodb.com/try/download/compass


2.?創(chuàng)建MongoDB線上數(shù)據(jù)庫

我們除了可以在本地通過MongoDB建立數(shù)據(jù)庫以外,還可以建立MongoDB的云數(shù)據(jù)庫。

https://account.mongodb.com/account/login

可以通過Google賬號(hào)或者Github賬號(hào)登陸,登陸之后的界面如下

主操作界面

我現(xiàn)在不理解為什么MongoDB要這么安排,但是它的數(shù)據(jù)庫一共有三層。

第一層 - cluster:最大的單位,在創(chuàng)建cluster時(shí),需要選擇云的提供者

第二層 - database:每個(gè)cluster可以有多個(gè)database

第三層 - collection:每個(gè)database可以有多個(gè)collection,collection是我們后面用pymongo處理數(shù)據(jù)的基本單位


現(xiàn)在,我們就開始一層一層的建立?,F(xiàn)在上面的圖中點(diǎn)擊create的按鈕

看起來cluster一共有三種類型,他們的區(qū)別在于云的供應(yīng)商的位置以及數(shù)據(jù)庫的存儲(chǔ)空間。我當(dāng)然選擇了shared cluster,因?yàn)樗敲赓M(fèi)的。然后云供應(yīng)商我選擇了Amazon,地區(qū)我選擇了離我這最近的弗吉尼亞。


很不幸,一個(gè)賬號(hào)只能建立一個(gè)免費(fèi)的數(shù)據(jù)庫,那么建立的結(jié)果就是主操作界面圖里面的cluster0。界面里面有該cluster里面目前的數(shù)據(jù)量和數(shù)據(jù)的輸入輸出量。

我們點(diǎn)擊這個(gè)cluster0,就可以進(jìn)入這個(gè)shared cluster里面了。

然后點(diǎn)擊Collections

可以看見我們現(xiàn)在擁有一個(gè)名字叫test的database,這個(gè)database下面有一個(gè)叫todos的collection。我們點(diǎn)擊create database就可以再創(chuàng)建一個(gè)database和collection。

這樣子我們就建立好了一個(gè)cluster的一個(gè)database的一個(gè)collection。


3. 利用pymongo連接MongoDB數(shù)據(jù)庫

利用pymongo連接MongoDB的方式類似于使用API。我們首先需要在API的網(wǎng)站上面注冊(cè)一個(gè)賬戶,利用賬戶來得到一個(gè)API key。把API key連接在request sring的后面就可以使用API了。


我們點(diǎn)擊Database Access,然后添加database user,這一步相當(dāng)于注冊(cè)賬戶。

然后點(diǎn)擊Network Access,將當(dāng)前的IP地址添加進(jìn)去,確保在當(dāng)前的IP下,pymongo可以接入MongoDB。如果不知道當(dāng)前的IP是什么的話,就添加IP?0.0.0.0/0。否則在使用pymongo的時(shí)候會(huì)請(qǐng)求超時(shí)。

我們現(xiàn)在擁有一個(gè)賬戶了。下一步是回到主操作界面,在cluster0右面點(diǎn)擊connect。

在彈出的窗口里面選擇connect your application。

選擇好自己的python版本之后,一段接口string會(huì)自動(dòng)生成。我們需要將這個(gè)string中的<password>換成自己剛剛賬戶中設(shè)置的密碼。一段request string就生成了。


4. 安裝pymongo

從terminal進(jìn)入自己想要安裝pymongo的環(huán)境,然后輸入指令

就可以了。


5. pymongo連接和一些基本操作

安裝好pymongo之后,我們就可以開始寫碼的。打開自己的IDE

視頻里面只用了上面這一行從pymongo中導(dǎo)入MongoClient。讓我們看看它是怎么通過Python來操作剛剛建立的云數(shù)據(jù)庫的。

在之前我們通過點(diǎn)擊主操作界面cluster0右邊的connect按鈕生成一個(gè)request string。這個(gè)request string和我們的cluster0是對(duì)應(yīng)的。在寫碼時(shí)我們先把這個(gè)request string賦給變量request_str。變量client就象征著cluster0。我們?cè)賴L試輸出這個(gè)cluster0下面database的名字,可以看到有test, admin和local三個(gè),后兩個(gè)是默認(rèn)生成的數(shù)據(jù)庫,我們不用管他們,只有test是我們剛剛創(chuàng)建的數(shù)據(jù)庫。

我們?cè)偻ㄟ^上面代碼框中的第一行提取出代表database test的變量,我們叫他db。同樣的,我們通過第二行來獲取test下面的collections的名字。我們剛剛只創(chuàng)建了一個(gè)collection,名字叫todos。


這個(gè)叫todos的collection是空的,里面什么都沒有。現(xiàn)在我要在這個(gè)collection里面插入第一個(gè)數(shù)據(jù)。

要插入的數(shù)據(jù)都要定義成字典。這里名字叫tudo1。我們通過db.todos來表示database test下面的collection todos。對(duì)于對(duì)象db.todos,我們使用insert_one函數(shù)來插入一行數(shù)據(jù)。運(yùn)行上面的代碼框之后刷新云數(shù)據(jù)庫界面,我們就能看到這條數(shù)據(jù)了。

多條數(shù)據(jù)同時(shí)插入是通過list實(shí)現(xiàn)的,list里面含有幾個(gè)dictionary,就可以插入幾條數(shù)據(jù)。運(yùn)行上面的代碼,再刷新云數(shù)據(jù)庫,會(huì)變成下面的樣子。一共有三條數(shù)據(jù)。

.find_one()是尋找數(shù)據(jù)的操作,如果我們不加任何的argument,會(huì)自動(dòng)返回collection里面的第一條數(shù)據(jù)。


我們可以在括號(hào)內(nèi)加入字典作為argument。上面代碼框中的第一行代表著:尋找第一個(gè)name標(biāo)簽是Anpingshengyirenhao的query。因此,也會(huì)返回collection里面的第一條數(shù)據(jù)。


類似的,找到第一個(gè)text標(biāo)簽值為My second todo!的query。我們輸入的第二條數(shù)據(jù)返回了。


找到第一個(gè)tags標(biāo)簽值中含有c++的query。注意這里我們輸入數(shù)據(jù)時(shí),有可能會(huì)有一個(gè)標(biāo)簽對(duì)應(yīng)多個(gè)值的情況,多個(gè)值以list的形式表示。因?yàn)閗ey tags對(duì)應(yīng)的value ['c++', 'coding']里面有‘c++'。所以最后第三條數(shù)據(jù)被返回了。


現(xiàn)在我們想通過標(biāo)簽_id來檢索query,需要先倒入ObjectId這個(gè)object,否則識(shí)別不了第三行中的字典。


前面的find_one函數(shù)都是找到一個(gè)query,如果我們想要找到所有符合條件的query的話,就需要使用find函數(shù)。find函數(shù)和find_one函數(shù)一樣,需要字典做argument,函數(shù)會(huì)返回一個(gè)iterator。這里我們想找到標(biāo)簽name的值為Anpingshengyirenhao的query,返回iterator result8。我們?cè)谟胠ist函數(shù)將iterator展開,就能得到兩個(gè)name為Anpingshengyirenhao的query。


count_documents函數(shù)可以查找符合特定條件的query的數(shù)量。如果argument放空字典,返回的是當(dāng)前collection內(nèi)query的數(shù)量。第二行則是在尋找tags標(biāo)簽的值里面含有c++的query數(shù)量,我們有一個(gè)。最后一個(gè)是找tags標(biāo)簽的值有c++++的數(shù)量,可是我們的tags的list里面只有python, c++ 或者 coding,所以返回?cái)?shù)量0個(gè)query。


除了尋找含有特定標(biāo)簽值的query以外,find函數(shù)還可以尋找某標(biāo)簽值處于特定范圍內(nèi)的query。result9就是在尋找所有date標(biāo)簽的值早于2022年2月1日的query,相對(duì)的,result就是找晚于這個(gè)日期的query。更多相關(guān)的范圍檢索可以參照我最后一行注釋的網(wǎng)頁。


delete_one是刪除具有指定標(biāo)簽值的query。運(yùn)行上面的代碼之后刷新云數(shù)據(jù)庫,我們的第一個(gè)query會(huì)被刪除。

delete_many函數(shù)可以一次性刪除所有擁有特定標(biāo)簽值的query。這里刪除所有name標(biāo)簽的值是Anpingshengyirenhaod的query。所以第二個(gè)query會(huì)被刪除。

只剩一個(gè)query了

這一行是更新query,首先找到第一行tags標(biāo)簽的值含c++的query,然后把他們的status標(biāo)簽設(shè)置成done。這里的argument有兩個(gè)字典,第二個(gè)字典需要用到$set query特殊指令,上面提到的網(wǎng)頁中可以查到。

類似的,首先找到第一個(gè)tags標(biāo)簽的值含c++的query,然后利用第二個(gè)字典argument中的$unset來把的status標(biāo)簽刪除。這第二個(gè)字典里面status后面的值是什么貌似不重要,最后status標(biāo)簽都會(huì)消失。

標(biāo)簽status消失了

我們也可以再利用$set重新設(shè)置status標(biāo)簽,刷新后這個(gè)標(biāo)簽會(huì)重新出現(xiàn)。


[Quant 2.1] 通過pymongo連接MongoDB線上數(shù)據(jù)庫以及一些簡單操作的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
宾阳县| 永兴县| 和顺县| 当雄县| 武强县| 德庆县| 砚山县| 潮州市| 石台县| 收藏| 博客| 千阳县| 阿克| 宁强县| 南投市| 玉树县| 太白县| 申扎县| 宝鸡市| 铜川市| 彭州市| 汤阴县| 乾安县| 延川县| 定结县| 临朐县| 读书| 色达县| 正定县| 白沙| 泸州市| 巴彦县| 宣威市| 南宫市| 安阳市| 开化县| 永福县| 海安县| 寿光市| 吴川市| 凤阳县|