首頁技術(shù)文章正文

pymongo常用的幾種交互對象【Python技術(shù)文章】

更新時(shí)間:2021-04-01 來源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif


pymongo模塊中提供了4個對象與MongoDB數(shù)據(jù)庫進(jìn)行交互,分別是MongoClient對象、DataBase對象、Collection對象和Cursor對象。

1. MongoClient對象

MongoClient對象用于建立與MongoDB數(shù)據(jù)庫的連接,它可以使用如下構(gòu)造方法進(jìn)行創(chuàng)建:

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

以上方法中常用參數(shù)的含義如下:

host,表示主機(jī)地址,默認(rèn)為localhost。

port,表示連接的端口號,默認(rèn)為27017。

document_class,表示數(shù)據(jù)庫執(zhí)行查詢操作后返回文檔的類型,默認(rèn)為dict。

建立連接到MongoDB數(shù)據(jù)庫,示例如下:

client = MongoClient()

上述示例創(chuàng)建MongoClient對象時(shí)沒有傳入任何參數(shù),說明建立連接到默認(rèn)主機(jī)地址和端口的MongoDB數(shù)據(jù)庫。

也可以顯式地指定主機(jī)地址和端口號,示例如下:

client = MongoClient('localhost', 27017)

2. DataBase對象

DataBase對象表示一個數(shù)據(jù)庫,可以通過MongoClient對象進(jìn)行獲取。通過上文創(chuàng)建的MongoClient對象client獲取數(shù)據(jù)庫,示例如下:

data_base = client.db_name

需要注意的是,使用以上兩種方式獲取數(shù)據(jù)庫時(shí),若指定的數(shù)據(jù)庫db_name已經(jīng)存在,直接訪問db_name數(shù)據(jù)庫,否則創(chuàng)建一個數(shù)據(jù)庫db_name。

3. Collection對象

Collection對象包含一組文檔,代表MongoDB數(shù)據(jù)庫中的集合,類似于關(guān)系數(shù)據(jù)庫中的表,但它沒有固定的結(jié)構(gòu)。創(chuàng)建Collection對象的方式與創(chuàng)建數(shù)據(jù)庫的方式類似,例如,通過 data_base創(chuàng)建集合test_collection,代碼如下:

collection = db.test_collection

也可以采用訪問字典值的形式創(chuàng)建Collection對象:

collection = db['test-collection']

表1 Collection對象常用方法

方法說明
insert_one()向集合中插入一條文檔
insert_many()向集合中插入多條文檔
find_one()查詢集合中的一條文檔。若找到匹配的文檔,返回單個文檔,否則返回None
find()查詢集合中的多條文檔。若找到匹配項(xiàng),則返回一個Cursor對象
update_one()更新集合中的一條文檔
update_many()更新集合中的多條文檔
delete_one()從集合中刪除一條文檔
delete_many()從集合中刪除多條文檔
count_documents(filter)根據(jù)匹配條件filter統(tǒng)計(jì)集合中的文檔數(shù)量。若傳入空字典,則返回所有文檔的數(shù)量;若傳入帶有鍵值對的字典,則返回符合條件的文檔數(shù)量

值得一提的是,pymongo中使用字典來表示MongoDB數(shù)據(jù)庫的文檔,每個文檔中都有一個_ id屬性,用于保證文檔的唯一性,當(dāng)它們插入到集合中時(shí)若未提供_ id,會被MongoDB自動設(shè)置獨(dú)特的_id值。

4. Cursor對象

Cursor對象是通過Collection對象調(diào)用find()方法返回的查詢對象,該對象中包含有多條匹配的文檔,可結(jié)合for循環(huán)遍歷取出每條文檔。例如,使用insert_many()方法向collection中插入多條文檔,之后使用find()方法查詢匹配的文檔,代碼如下:

collection.insert_many([{'x': i} for i in range(2)])
cursor_obj = collection.find({'x': 1})
for document in cursor_obj:
  print(document)





猜你喜歡:
pymysql庫常用對象用法

【Python面經(jīng)題】爬蟲數(shù)據(jù)為什么選擇Mongodb存儲?

怎樣理解Python中的面向?qū)ο螅?/a>    

黑馬程序員Python+數(shù)據(jù)分析培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!