教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

使用Python如何操作Mongodb數(shù)據(jù)庫(kù)?

更新時(shí)間:2023年01月29日16時(shí)14分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

Python是目前比較流行的程序設(shè)計(jì)語(yǔ)言,特別是在人工智能和大數(shù)據(jù)分析處理上,市場(chǎng)空間是比較大的。寫此同時(shí),MongDB是比較流行的NoSQL數(shù)據(jù)庫(kù)的解決方案,兩者結(jié)合使用的場(chǎng)景非常多。

要想在Python項(xiàng)目中使用MongoDB數(shù)據(jù)庫(kù),需要在Python標(biāo)準(zhǔn)庫(kù)的基礎(chǔ)上添加對(duì)MongoDB的支持。截止到目前,常用的開(kāi)發(fā)MongoDB的包為PyMongo。下面將針對(duì)PyMongo的相關(guān)內(nèi)容進(jìn)行詳細(xì)介紹。


PyMongo的概念

PyMongo是用于MongoDB的開(kāi)發(fā)工具,是Python 操作MongoDB數(shù)據(jù)庫(kù)的推薦方式。

PyMongo中主要提供了如下類與MongoDB數(shù)據(jù)庫(kù)進(jìn)行交互:

◆MongoClient類:用于與MongoDB服務(wù)器建立連接。

◆DataBase類:表示MongoDB中的數(shù)據(jù)庫(kù)。

◆Collection 類:表示MongoDB中的集合。

◆Cursor 類:表示查詢方法返回的結(jié)果,用于對(duì)多行數(shù)據(jù)進(jìn)行遍歷。

PyMongo庫(kù)的基本使用流程如下:

(1)創(chuàng)建一個(gè)MongoClient類的對(duì)象,與MongDB服務(wù)器建立連接。

(2)通過(guò)MongoClient對(duì)象訪問(wèn)數(shù)據(jù)庫(kù)(DataBase 對(duì)象)。

(3)使用上個(gè)步驟的數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)集合Colletio對(duì)象)。

(4)調(diào)用集合中提供的方法在集合中插人、刪除、修改和查詢文檔。


PyMongo的基本操作

由于PyMongo是第三方庫(kù),所以需要安裝之后才能在Python中使用。在Windows系統(tǒng)下安裝可使用pip命令:

pip install pymongo

安裝完成之后,就可以使用PyMongo操作MongoDB 數(shù)據(jù)庫(kù)。首先要在項(xiàng)目中導(dǎo)人PyMongo庫(kù)的全部?jī)?nèi)容或者使用到的類,通常情況下采用如下方式引人:

from pymongo import *

導(dǎo)人PyMongo庫(kù)之后,就可以使用該庫(kù)進(jìn)行與數(shù)據(jù)庫(kù)相關(guān)的操作。下面就針對(duì)PyMongo庫(kù)的基本操作一一進(jìn)行介紹。


1.創(chuàng)建連接

開(kāi)始使用PyMongo的第一步 是創(chuàng)建一個(gè) MongoClient類的對(duì)象,用于連接MongoDB服務(wù)器。

可以通過(guò)MongoClient類的構(gòu)造方法進(jìn)行創(chuàng)建。該方法語(yǔ)法格式如下:

class pymongo.mongo_client.MongoClient(host='localhost', port=27017, document_class=dict, tz_aware=False, connect=True, **kwargs)

上述方法中包含的參數(shù)含義如下:

(1)host參數(shù):表示主機(jī)名或IP地址。

(2)port參數(shù):表示連接的端口號(hào)。

(3)document_class參數(shù):從此客戶端查詢返回的文檔默認(rèn)使用此類。

(4)tz_aware參數(shù):如果為True,則此MongoClient作為文檔中的值返回的datetime實(shí)例,將會(huì)被時(shí)區(qū)所識(shí)別。

(5)connect參數(shù):若為True(默認(rèn)),則立即開(kāi)始在后臺(tái)連接到MongoDB,否則連接到第一個(gè)操作。

建立連接的示例如下:

client=MongoClient()

上述示例中沒(méi)有傳人任何參數(shù),將建立連接到默認(rèn)的主機(jī)(localhost)和端口(27017 )。

除此之外,可以顯式地指定主機(jī)和使用端口。例如:

client=MongoClient ('localhost', 27017)

也可以使用MongoDB的URL路徑形式傳人參數(shù)。例如:

client=MongoClient('mongodb://localhost:27017')

2.訪問(wèn)數(shù)據(jù)庫(kù)

只要已經(jīng)建立了與Mongo服務(wù)器的連接,就可以直接訪問(wèn)任何數(shù)據(jù)庫(kù)。訪問(wèn)數(shù)據(jù)庫(kù)的方式比較簡(jiǎn)單,可以將其當(dāng)作屬性一樣,使用點(diǎn)語(yǔ)法進(jìn)行訪問(wèn)。例如:

db=client.pymongo_test

此外,還可以使用字典的形式進(jìn)行訪問(wèn)。例如:

db=client['pymongo_test']
注意:如果指定的數(shù)據(jù)庫(kù)已經(jīng)存在,就直接訪問(wèn)這個(gè)數(shù)據(jù)庫(kù);如果指定的數(shù)據(jù)庫(kù)不存在,就會(huì)自動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。

3.創(chuàng)建集合

創(chuàng)建集合的方式與創(chuàng)建數(shù)據(jù)庫(kù)類似,通過(guò)數(shù)據(jù)庫(kù)使用點(diǎn)語(yǔ)法的形式進(jìn)行訪問(wèn)。其語(yǔ)法格式

如下:

數(shù)據(jù)庫(kù)名稱.集合名稱

例如,訪問(wèn)db數(shù)據(jù)庫(kù)中的student集合,示例代碼如下:

column=db.student

4.插入文檔

往集合中插人文檔的方法主要有如下兩個(gè):

(1) insert_one()方法:插人一條文檔對(duì)象。

(2) insert_many()方法:插人列表形式的多條文檔對(duì)象。

插人一條文檔的示例如下:

try:
	client=MongoClient(host='localhost', port=27017)
	db=client.mongo_insert
	collection=db.student
	result=collection.insert_one({'name':'zhangsan', 'age':20})
	print(result)
except Exception as error:
	print(error)

輸出結(jié)果為:

<pymongo.results.InsertOneResult object at 0x0000000034CFF88>

插人多條文檔的示例如下:

result=column.insert_many([{'name':'zhangsan', 'age': 20},
				{'name': 'lisi', 'age': 21},
				{'name': 'wangwu', 'age': 22}])

5.查詢文檔

用于查找文檔的方法主要有如下幾個(gè):

(1)find one()方法:查找-條文檔對(duì)象。

(2)find many0方法:查找多條文檔對(duì)象。

(3)find0方法:查找所有文檔對(duì)象。

下面以find0方法為例,介紹如何查詢集合中的所有文檔。具體如下:

try:
	client=MongoClient()
	db=client.mongo_insert
	collection=db.student
	result=collection.find({'age': 20})
	print(result)
	for doc in result:
		print(doc)
except Exception as error:
	print(error)

輸出結(jié)果為:

<pymongo.cursor.Cursor object at 0x00000000038F89B0>
{'_id': objectId('59f420f386d7080f1824d8c1'), 'name':'zhangsan', 'age': 20}

6.更新文檔

用于更新文檔的方法主要有如下幾個(gè):

(1) update_one()方法:更新一條文檔對(duì)象。

(2) update_many()方法:更新多條文檔對(duì)象。

更新一條文檔的示例如下:

collection.update_one({'age': 22},{'$set': {'name': 'zhaoliu'}})

更新多條文檔的示例如下:

collection.update_many({'age': 22}, {'$set': {'name': 'zhaoliu'}})

7.刪除文檔

用于刪除文檔的方法包括如下幾個(gè):

(1) delele_one()方法:刪除一條文檔對(duì)象。

(2) delete_many()方法:刪除所有記錄。

下面以delete_many()方法進(jìn)行舉例,介紹如何從集合中刪除所有的文檔。具體代碼如下:

collection.delete_many({})

通過(guò)對(duì)上述操作的學(xué)習(xí),熟練地掌握了數(shù)據(jù)庫(kù)的增加、刪除、查找、修改等基本操作之后,再去學(xué)習(xí)和提升就不會(huì)再有很大的障礙。實(shí)際上,使用PyMongo庫(kù)操作數(shù)據(jù)庫(kù)是非常簡(jiǎn)單的,以后如果遇到更加復(fù)雜的需求,在網(wǎng)絡(luò)上查一下官 方文檔或者技術(shù)博客,應(yīng)該都能順利解決。

0 分享到:
和我們?cè)诰€交談!