1. 程式人生 > >Python-MongoDB連線搭建(二):Python連線MongoDB

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官方文件翻譯

好的,本篇就介紹到這了,希望能給大家帶來幫助,你的支援將是我最大的動力!