mongodb是一款由c++語言編寫的非關係型資料庫,是乙個基於分布式檔案儲存的開源資料庫系統,其內容儲存方式類似於json物件,它的字段值可以是其它文件或陣列,但其資料型別只能是string文字型。
在使用之前我們要確保已經安裝好了mongodb並啟動了該服務。此處主要用於python資料的儲存,我們要安裝python的pymongo庫,執行 『pip install pymongo』 命令完成pymongo的安裝。進入python工作模式,可以通過pymongo.version 檢視pymongo的版本資訊。
第一步,連線mongodb
我們通過pymongo庫里的mongoclient。其中第乙個引數 host 是mongodb的位址,第二個引數是埠 port (不傳引數的話預設是27017)
client = pymongo.mongoclient(host='另一種方法是直接傳遞mongodb的連線字串,以 mongodb 開頭。127.0.0.1
',port=27017)
client = pymongo.mongoclient('第二步,選擇資料庫或集合mongodb:
')
在mongodb中可以建立多個資料庫,其中每個資料庫又包含許多集合,類似於關聯式資料庫中的表。選擇資料庫有兩種方法,這兩種方法作用相同。
db = client.test # test資料庫
db = client['選擇好資料庫後我們需要指定要操作的集合,與資料庫的選擇類似。test
']
p = db.persons # persons集合
p = db['第三步,新增資料persons
']
person =此處通過物件的 insert() 方法新增了一條資料,新增成功後返回的是資料插入過程中自動新增的 _id 屬性值,這個值是唯一的。另外我們還可以新增多條資料,它以列表的形式進行傳遞。result =p.insert(person)
# 在pymongo 3.x版本後,官方推薦使用insert_one(),該方法返回的不再是單純的_id值,我們需要執行result.inserted_id檢視 _id 值
print(result)
person =第四步,查詢資料person1 =
result =p.insert([person,person1])
# 推薦使用 insert_many() 方法,之後使用 result.inserted_ids 檢視插入資料的 _id 列表
print(result)
查詢資料我們可以使用 find_one() 或 find() 方法,其中 find_one() 得到的是單個資料結果,find() 返回的是乙個生成器物件。
res = p.find_one() # 查詢 name 為 abc 的人的資訊,返回字典型的資料find() 則用來查詢多條資料,返回 cursor 型別的生存器,我們要遍歷取得所有的資料結果。print(res)
res = p.find() # 查詢集合中age是20的資料# res = p.find(}) # 查詢集合中age大於20的資料
另外,我們還可以通過正則匹配進行查詢。
res = p.find(}) # 查詢集合中name以a開頭的資料要統計查詢的結果一共有多少條資料,需要使用 count() 方法
count = p.find().count() # 統計集合中所有資料條數排序則直接呼叫 sort() 方法,根據需求傳入公升序降序標誌即可res = p.find().sort('當我們只需要取得幾個元素時,我們可以使用 skip() 方法偏移幾個位置,得到去掉偏移個數之後剩下的元素資料age',pymongo.ascending) # 將集合中的資料根據age進行排序,pymongo.ascending表示公升序,pymongo.descending表示降序
res = p.find(}).skip(2)第五步,更新資料print([ r['
name
'] for r in res ]) # 列印name以a開頭的資料的名稱name,從第三個顯示
更新資料我們使用 update() 方法實現,並指定更新的條件和需要更新的資料即可。
where =返回的是乙個字典形式的資料,,其中 ok 表示執行成功,nmodified 表示影響的資料條數。res =p.find_one(where)
res[
'age
'] = 25result =p.update(where, res) # 推薦使用 update_one() 或 update_many()
print(result)
另外我們還可以使用 $set 操作符對資料進行更新。使用$set則只更新字典內存在的字段,其它欄位則不更新,也不刪除。如果不用則會更新所有的資料,而其它存在的字段則會被刪除。
where = }第六步,刪除資料result = p.update_many(where,}) # 將集合中年齡大於20的第一條的資料年齡加1
print(result)
print(result.matched_count,result.modified_count) # 獲取匹配的資料條數,影響的資料條數
刪除資料可以呼叫 remove() 方法,需要指定刪除條件。
result = p.remove() # 刪除名稱為abc的資料,推薦使用 delete_one() 和 delete_many(),執行後呼叫 result.delete_count,獲得刪除的資料條數返回的是一條字典型資料,另外,我們還可以對索引進行操作,比如 create_index() 建立單個索引,create_indexes()建立多個索引,drop_index()刪除索引等方法。
參考:靜覓部落格
Python爬蟲 爬蟲獲取資料儲存到檔案
本篇文章 繼續介紹另外兩種方式來實現python爬蟲獲取資料,並將python獲取的資料儲存到檔案中。說明一下我的 環境是python3.7,本地環境是python2.x的可能需要改部分 用python3.x環境的沒問題。coding utf 8 import urllib.requestimpor...
Python爬蟲(二) 爬蟲獲取資料儲存到檔案
本篇文章 繼續介紹另外兩種方式來實現python爬蟲獲取資料,並將python獲取的資料儲存到檔案中。說明一下我的 環境是python3.7,本地環境是python2.x的可能需要改部分 用python3.x環境的沒問題。coding utf 8 import urllib.request impo...
python 爬蟲 xpath 儲存到資料庫
參考 安裝 lxml 庫 import pymysql import requests from lxml import etree def get movies page url page 獲取url中的內容 response requests.get url html content respo...