python連接mongo_使用簡單的Python連接訪問MongoDB

繼續來聊MongoDB。

MongoDB作為了一個數據庫產品軟件,除了服務器Server端進程(mongod)外,還提供了比較豐富的訪問連接接口。我們最常用的就是兩個類型,一個是原生mongo shell,另一個就是應用程序語言訪問接口。

1、從Mongo Shell到應用程序訪問接口

Mongo Shell是MongoDB官方提供的數據庫訪問接口程序,類似于Oracle的sqlplus和Mysql的mysql程序。應該說,Mongo shell對于MongoDB的連接、訪問和功能操作是最好的。所有與MongoDB相關的管理、開發和數據訪問職能,都可以通過Mongo Shell進行實現。

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

目前,MongoDB提供的語言驅動,包括Mongo Shell(原生也需要支持包)、Python、Java、Node.js、PHP、C#、Perl、Ruby和Scala。本篇主要介紹Python的訪問方式,記錄下來,留待需要的朋友待查。

2、Python驅動安裝

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 https://pypi.python.org/simple/pymongo/

Best match: pymongo 3.4.0

Downloading https://pypi.python.org/packages/e7/7c/6c6fa7f0c416e227445979403f14c

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官方文檔。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538401.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

spring與mybatis三種整合方法

原文鏈接:http://www.cnblogs.com/wangmingshun/p/5674633.html ------------------------------------------------------------------------------------------------- 1、采用MapperScannerConfigurer,它將會查找類路徑下的映射器并自動將它們創建成…

js常用的2中排序方法:冒泡排序和快速排序

冒泡排序:例如9 4 5 6 8 3 2 7 10 1 首先:9和4比較 4放前 4 9 5 6 8 3 2 7 10 1 4和5比較 4不動 4 9 5 6 8 3 2 7 10 1 4和6比較 4不動 4 9 5 6 8 3 2 7 10 1 4和3比較 3放前 3 9 5 6 8 4 2 7 10 1 3和2比較 2放前 2 9 5 6 8…

java 注冊頁面正則式_Java使用正則表達式對注冊頁面進行驗證功能實現

本文給大家介紹java使用正則表達式對注冊頁面進行驗證的代碼,代碼如下所示:package regex;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class registered {public static void main(String[] args)…

python 編程效率_如何有效提升數據分析效率?五大Python技巧

如何有效提升數據分析效率?相信這是所有數據分析工作者都想解決的問題。本文整理了五大python技巧,分別是Pandas Profiling;使用 Cufflinks 和 Plotly 繪制 Pandas 數據;IPython 魔術命令;Jupyter 中的格式編排&#x…

please select a vaild python interpret

當 JetBrains PyCharm 2017.1.3 x64 遇到 please select a vaild python interpret 錯誤時: 進入PyCharm setting 選項,搜索 interpret

Grafana分析Nginx日志

配置Groub by -Terms時報錯,提示需要設置fielddatatrue,報錯內容大概如下: "Fielddata is disabled on text fields by default ... " 解決方法如下: https://www.elastic.co/guide/en/elasticsearch/reference/curren…

php curl json post請求_php post請求發送json對象數據參數

網頁中發送請求時,大部分情況都參數以鍵值組合發送數據的,而一些第三方如java開發的接口中需要發送post請求,請求參數為json類型。既然要發送json數據,首頁我們需要在請求頭中定義數據類型為json,告訴服務器客服端發送…

python刪除鏈表中的最小元素_LintCode Python 入門級題目 刪除鏈表元素、整數列表排序...

刪除鏈表元素:循環列表head,判斷當前指針pre.next的val是否等于val,如果是,當前pre重指向pre.next.next,直至pre.next Null# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.va…

IDEA 更換主題

1、下載主題文件 百度或者谷歌 IDEA themes 網址有可能會變化。目前是 http://color-themes.com 選擇自己喜歡的顏色,下載。 2、導入主題文件 File----Import Setting 導入下載的jar文件,一路確認,idea會自動重啟。 3、選擇主題 點擊…

【CentOS 7筆記】cp、mv、文檔查看方式

2019獨角獸企業重金招聘Python工程師標準>>> 一. copy 常用cp -r/R #拷貝目錄,遞歸 cp -i #覆蓋時會提示,默認項 cp -p #保留源目錄或源文件的屬性 cp -b #源文目與目的文目建立鏈接,鏈接 cp -f #強制覆蓋 cp -v …

php 情書,php趣味編程 - php輸出笛卡爾情書的秘密

/*笛卡爾情書的秘密心形圖案的實現。重點是心形函數ra(1-sin),據說這是笛卡爾死前寄出的最后一封情書內容。這里面隱藏著一個刻骨銘心的秘密;“一生只為等待能手繪這個函數給我的人”*/$width 500;$height 500;header("Content-type: image/gif");$img …

python 月報_python實踐--月報分析之獲取jira缺陷數據

首先安裝jira,同其他第三方庫,直接可以 easy_install jira。判斷jira是否按轉成功輸入:from jira import JIRA,如果沒有報錯則說明安裝成功;#連接jirajira JIRA(“http://jira地址”,basic_auth (“用戶名…

JAVA中的native

native主要用于方法上,簡單介紹如下: 1、一個native方法就是一個Java調用非Java代碼的接口。一個native方法是指該方法的實現由非Java語言實現,比如用C或C實現。 2、在定義一個native方法時,并不提供實現體(比較像定…

script filename php,PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 的區別

PHP $_SERVER[SCRIPT_FILENAME] 與 __FILE__通常情況下,PHP $_SERVER[SCRIPT_FILENAME] 與 __FILE__ 都會返回 PHP 文件的完整路徑(絕對路徑)與文件名:echo SCRIPT_FILENAME 為:,$_SERVER[SCRIPT_FILENAME];echo ;echo __FILE__ 為&#xff1…

015. 深入JVM學習—Java引用類型

2019獨角獸企業重金招聘Python工程師標準>>> 1. 引用類型劃分 強引用:當內存不足時,JVM寧可出現“OutOfMemoryError”錯誤停止,也需要進行保存,并且不會將此空間回收。 軟引用:當內存不足的時候&#xff0…

python人臉關鍵點識別_用Face++實現人臉關鍵點檢測

最近看了一篇很有意思的文章 http://matthewearl.github.io/2015/07/28/switching-eds-with-python/ ,本來想自己復現一下,后來發現自己太菜,用了一整天只完成了不到一半,最近要找工作了,看書看的有點煩,本…

【東營seo】SEO發展下的大機遇

【東營seo】SEO發展下的大機遇 seo優化越來越難做,很多的人都開始懷疑seo優化沒有價值。的確現如今seo優化與十年前比確實不是一個級別的,即便如此,seo優化還是存在其持續發展的機制。  自然搜索排名不再是唯一的競爭點,語音搜索…

手機整屏顯示數據php,完美解決手機網頁大背景不能鋪完整個屏幕的超級代碼

html,body{min-height:100%;} 優化 html{min-height:100%;} html,body{min-height:100%;}body{background-image:url(bg_640.jpg);background-size:cover;babackground-repeat:no-repeat;}.main{padding-top:141%;text-align:cenhtml,body{min-height:100%;}優化html{min-heigh…

python linux教程_Python入門系列教程1—linux基礎

課程咨詢、獲取課件、技術交流直接加入博學谷在線學習:631731828課程簡介本課程是Python系列入門課程的第一階段,首先通過介紹不同領域的三種操作系統,操作系統的發展簡史以及Linux系統的文件目錄結構,讓大家對Linux系統有一個簡單…

如何解決android studio的模擬器有密碼的問題

原文鏈接:https://jingyan.baidu.com/article/e4d08ffd6a95300fd2f60dcf.html ------------------------ 在使用Android Studio的時候,創建的模擬器開機竟然有密碼,提示:to start android,enter your password,困擾了好長時間&am…