首頁技術文章正文

python操作mongodb數(shù)據庫詳解

更新時間:2021-06-08 來源:黑馬程序員 瀏覽量:

IT培訓班

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

要想在Python項目中使用MongoDB數(shù)據庫,需要在Python標準庫的基礎上添加對MongoDB的支持。截止到目前,常用的開發(fā)MongoDB的包為PyMongo。下面將針對PyMongo的相關內容進行詳細介紹。


PyMongo的概念

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

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

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

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

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

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

PyMongo庫的基本使用流程如下:

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

(2)通過MongoClient對象訪問數(shù)據庫(DataBase 對象)。

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

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


PyMongo的基本操作

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

pip install pymongo

安裝完成之后,就可以使用PyMongo操作MongoDB 數(shù)據庫。首先要在項目中導人PyMongo庫的全部內容或者使用到的類,通常情況下采用如下方式引人:

from pymongo import *

導人PyMongo庫之后,就可以使用該庫進行與數(shù)據庫相關的操作。下面就針對PyMongo庫的基本操作一一進行介紹。


1.創(chuàng)建連接

開始使用PyMongo的第一步 是創(chuàng)建一個 MongoClient類的對象,用于連接MongoDB服務器。

可以通過MongoClient類的構造方法進行創(chuàng)建。該方法語法格式如下:

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

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

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

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

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

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

(5)connect參數(shù):若為True(默認),則立即開始在后臺連接到MongoDB,否則連接到第一個操作。

建立連接的示例如下:

client=MongoClient()

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

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

client=MongoClient ('localhost', 27017)

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

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

2.訪問數(shù)據庫

只要已經建立了與Mongo服務器的連接,就可以直接訪問任何數(shù)據庫。訪問數(shù)據庫的方式比較簡單,可以將其當作屬性一樣,使用點語法進行訪問。例如:

db=client.pymongo_test

此外,還可以使用字典的形式進行訪問。例如:

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

3.創(chuàng)建集合

創(chuàng)建集合的方式與創(chuàng)建數(shù)據庫類似,通過數(shù)據庫使用點語法的形式進行訪問。其語法格式

如下:

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

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

column=db.student

4.插入文檔

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

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

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

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

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)

輸出結果為:

<pymongo.results.InsertOneResult object at 0x0000000034CFF88>

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

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

5.查詢文檔

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

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

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

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

下面以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)

輸出結果為:

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

6.更新文檔

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

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

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

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

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

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

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

7.刪除文檔

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

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

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

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

collection.delete_many({})

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



猜你喜歡:

Python爬蟲難學嗎?學會需要多久?

Python的標準模塊:sys、os、random和time

Python爬蟲支持的網頁解析技術有哪些?

黑馬程序員python+大數(shù)據培訓課程

分享到:
在線咨詢 我要報名
和我們在線交談!