Python-MongoDB連線搭建(二):Python連線MongoDB
作者:WenWu_Both
出處:http://blog.csdn.net/wenwu_both/article/
版權:本文版權歸作者和CSDN部落格共有
轉載:歡迎轉載,但未經作者同意,必須保留此段宣告;必須在文章中給出原文連結;否則必究法律責任
上篇文章我們介紹了MongoDB資料庫的安裝及相關配置,今天我們通過Python來操作MongoDB。
(1)MongoDB資料庫使用者管理
與其他資料庫(Oracle,Mysql)等類似,MongoDB也提供了使用者管理的功能,還記得上篇文章裡的.conf檔案嗎?再貼一遍:
# 設定資料目錄的路徑
dbpath = D:\MongoDB\data\db
# 設定日誌資訊的檔案路徑
logpath = D:\MongoDB\log\MongoDB.log
# 開啟日誌輸出操作
logappend = true
# 使用者管理
noauth = true
# 設定埠號
port = 27001
其中,使用者管理:“noauth=true”即表示不啟用使用者管理,下面我們介紹如何啟用使用者管理並建立使用者。
1、切換到需要管理的資料上,例:
use transdata # 此時切換到資料庫transdata
2、建立使用者,例:
db.createUser({
"user":"hello",
"pwd":"python" ,
"roles":[{"role":"readWrite","db":"transdata"}]
}
)
出現上圖即表明此時我們建立了hello賬戶,密碼為Python。
3、修改啟動檔案
將啟動檔案MongoDB.conf中使用者管理項改為
auth = true # 此時啟動了使用者管理
4、重新連線資料庫
完成上述步驟,我們利用“mongo –port=27001”命令仍然可以連線上資料庫,但是執行不了具體操作,會報錯,如下圖:
出現上圖則表明使用者管理啟動成功,此時我們需要利用以下命令連線資料庫:
mongo localhost:27001/transdata -u hello -p python
此時,我們發現我們成功連線到資料庫,且可以對資料庫進行相關操作。
注:修改使用者密碼的命令為db.changeUserPassword(“資料庫名”,”新密碼”),但請先將.conf的使用者管理模式關掉,密碼修改成功後再改回來。
(2)Python連線MongoDB
Python與MongoDB的愛恨情仇都在pymongo包裡,具體包的引用我就不就介紹了。
PS:推薦用Anaconda來整合Python開發環境,超好用,可參見Anaconda安裝及使用教程
Python連線資料庫有兩種方式:MongoClient及Connection,從這兩個類的繼承來看,connection是繼承了MongoClient的,建議使用MongoClient而不是使用Connection。(也就是說,MongoClient可以使用方法Connection都可以使用)。
1、無使用者驗證
# 匯入相應包
from pymongo import MongoClient
# 建立資料庫連線
client = MongoClient('localhost',port)
# 連線目標資料庫
db = client.dbName
# 連線集合
col = client.CollectionName
2、使用者驗證連線
# 匯入相應包
from pymongo import MongoClient
# 建立和資料庫系統的連線,建立Connection時,指定host及port引數
client = MongoClient('localhost', port,dbName)
# 連線目標資料庫
db = client.dbName
# 資料庫使用者驗證
db.authenticate("account", "password")
#連線集合
col = client.CollectionName
# 列印集合第1條記錄
print col.find_one()
我們執行使用者驗證連線,成功後如下圖:
自此,我們就通過Python連線上MongoDB的目標資料庫了,是不是敲開心,哈哈。。。
(3)pymongo的相關命令
連線上資料庫就可以對資料庫中的資料進行操作了,cmd模式下,資料庫的相關操作我們就不贅述了,可參見MongoDB 教程,同時推薦個特別好的視訊教程,對我幫助很大,哈哈。。。
本節主要認識幾個常用的pymongo命令:
1、插入資料
db.col.insert_one() # 插入單個文件
db.col.insert_many() # 插入多個文件
2、查詢資料
a.全部查詢
cursor = db.col.find() # 注意返回的是查詢結果的遊標,這是產生文件的迭代物件
for doc in cursor:
print doc
b.條件查詢
cursor = db.col.find({field1:value1,field2:value2,...}) # 返回條件遊標
for doc in cursor:
print doc # 迭代遊標列印文件
c.嵌入式文件中查詢
cursor = db.col.find({field1.field2...field3...:value})
3、結果排序
通過追加sort()方法進行查詢,其中:
pymongo.ASCENDING 表示升序排序
pymongo.DESCENDING
如果要通過多個鍵星星排序,可以傳遞鍵的列表和以及對應的排序型別的列表。舉例來說,如下操作將返回restaurants集合中所有的文件,並且先通過borough欄位進行升序排序,然後在每個borough內,通過”address.zipcode”欄位進行升序排序。
import pymongo
cursor = db.restaurants.find().sort([
("borough", pymongo.ASCENDING),
("address.zipcode", pymongo.ASCENDING)
])
4、更新資料
update_one()和update_many()
db.col.update_one() # 更新單個文件
db.col.update_many() # 更新多個文件
5、刪除文件
db.col.delete_one({}) # 刪除單個文件
db.col.delete_many({}) # 刪除所有文件
還有資料聚合及資料索引等操作函式,這裡不再贅述,具體可參見部落格:
PyMongo官方文件翻譯
好的,本篇就介紹到這了,希望能給大家帶來幫助,你的支援將是我最大的動力!