使用簡單的Python連線訪問MongoDB

realkid4發表於2017-07-22

 

 

繼續來聊MongoDB

 

MongoDB作為了一個資料庫產品軟體,除了伺服器Server端程式(mongod)外,還提供了比較豐富的訪問連線介面。我們最常用的就是兩個型別,一個是原生mongo shell,另一個就是應用程式語言訪問介面。

 

1、從Mongo Shell到應用程式訪問介面

 

Mongo ShellMongoDB官方提供的資料庫訪問介面程式,類似於OraclesqlplusMysqlmysql程式。應該說,Mongo shell對於MongoDB的連線、訪問和功能操作是最好的。所有與MongoDB相關的管理、開發和資料訪問職能,都可以透過Mongo Shell進行實現。

 

另一類就是應用程式訪問介面,也可以理解為程式語言介面。同其他所有資料庫相同,針對每個開發語言,MongoDB都有專門的訪問驅動Driver程式(或者稱為Module)進行支援。但是,由於不同語言在語法、語義和程式組織方式上的差異,使用程式訪問介面的時候,和標準Mongo Shell是有一些差別。這就是為什麼在MongoDB官方文件中,對於每個操作都提供多種程式語言版本的原因。

 

目前,MongoDB提供的語言驅動,包括Mongo Shell(原生也需要支援包)、PythonJavaNode.jsPHPC#PerlRubyScala。本篇主要介紹Python的訪問方式,記錄下來,留待需要的朋友待查。

 

2Python驅動安裝

 

Python是目前比較流行的程式設計語言,特別是在人工智慧AI和大資料分析處理上,市場空間是比較大的。MongoDB是比較流行的NOSQL資料庫解決方案,兩者結合的場景非常多。

 

對於Python而言,組織程式是以Module的方式進行。要在本地進行開發,需要本地在Python標準庫基礎上,新增對於MongoDB的支援。目前,比較常用的Mongodb包為pymongo

 

如果是Windows環境下,如果已經安裝好Python開發環境JDK,只需要呼叫esay_install程式就可以自動完成下載。

 

 

C:\Users\admin>easy_install pymongo

Searching for pymongo

Reading

Best match: pymongo 3.4.0

Downloading

4fcfc5960f7c220e8ad0370197fe87a/pymongo-3.4.0-py3.5-win-amd64.egg#md5=0fa1f3d995

42f032fc8940d8d53d7559

Processing pymongo-3.4.0-py3.5-win-amd64.egg

creating c:\program files\python35\lib\site-packages\pymongo-3.4.0-py3.5-win-amd

64.egg

Extracting pymongo-3.4.0-py3.5-win-amd64.egg to c:\program files\python35\lib\si

te-packages

Adding pymongo 3.4.0 to easy-install.pth file

 

Installed c:\program files\python35\lib\site-packages\pymongo-3.4.0-py3.5-win-am

d64.egg

Processing dependencies for pymongo

Finished processing dependencies for pymongo

 

 

在國內下載時間可能比較長,而且經常會有Timeout的情況出現。多測試幾次,或者直接到Python官網上下載安裝包就能解決。下載之後的pymongo包,被自動放在標準Python庫裡面。注意:這個時候即使是使用Eclipse外掛進行開發,也會自動的感應到最新的庫變化,即時生效。

 

3、簡單開發例項

 

下面進行一個簡單地例項。當前目標資料庫test上,包括pyinsert這個集合collection

 

 

> show collections

blog

pyinsert

xl

 

> db.pyinsert.find().count();

0

 

 

下面是插入的python記錄指令碼

 

 

from pymongo import MongoClient –匯入包模組

from bson.objectid import ObjectId

 

connect = MongoClient('172.16.19.143',27017)

db = connect.test –對應資料庫

 

operList = [{"name":"Ttest", "age":10},{"name":"Mark", "age":12},

            {"name":"Lucy", "age":10},{"name":"Tom", "age":32}]

 

res = db.pyinsert.insert_many(operList)  --批次插入

print(res)

 

 

注意:每個語言落實MongoDB語法的時候,有一些差別,具體需要參考官方解釋。上面的例項中,介紹了連線語句、組織Document Array和批次插入。插入後,結果如下:

 

 

> db.pyinsert.find();

{ "_id" : ObjectId("5972d32dc3e2cc1d108511b7"), "age" : 10, "name" : "Ttest" }

{ "_id" : ObjectId("5972d32dc3e2cc1d108511b8"), "age" : 12, "name" : "Mark" }

{ "_id" : ObjectId("5972d32dc3e2cc1d108511b9"), "age" : 10, "name" : "Lucy" }

{ "_id" : ObjectId("5972d32dc3e2cc1d108511ba"), "age" : 32, "name" : "Tom" }

 

 

檢索資料指令碼:

 

from pymongo import MongoClient

from bson.objectid import ObjectId

 

connect = MongoClient('172.16.19.143',27017)

db = connect.test

 

for data in db.pyinsert.find():

print(data)

 

 

操作結果:

 

 

{'_id': ObjectId('5972d32dc3e2cc1d108511b7'), 'name': 'Ttest', 'age': 10}

{'_id': ObjectId('5972d32dc3e2cc1d108511b8'), 'name': 'Mark', 'age': 12}

{'_id': ObjectId('5972d32dc3e2cc1d108511b9'), 'name': 'Lucy', 'age': 10}

{'_id': ObjectId('5972d32dc3e2cc1d108511ba'), 'name': 'Tom', 'age': 32}

 

 

4、結論

 

本篇針對python語言使用MongoDB的介面,進行了簡單介紹。更多的語法和使用,建議參考MongoDB官方文件。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-2142425/,如需轉載,請註明出處,否則將追究法律責任。

相關文章