溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用pymongo來連接mongo各種的形態(tài)

發(fā)布時間:2022-01-04 10:15:25 來源:億速云 閱讀:327 作者:柒染 欄目:大數(shù)據(jù)

如何使用pymongo來連接mongo各種的形態(tài),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

NO SQL 的產(chǎn)品在操作方面雖然有很多 GUI 的工具,或者讓人熟悉的命令行,但這些數(shù)據(jù)庫軟件的操作,如果有程序語言的加入則會變得要方便的多,Mongodb 如果使用一些語言,例如JAVASCRIPT 在內(nèi)部操作很多事情將變得簡單。通用的語言python 在操作數(shù)據(jù)庫方面已經(jīng)是很成熟的東西,連接mongodb 的python的方法也很多。

今天想正規(guī)以下如何使用pymongo來連接mongo 各種的形態(tài)做一個總結(jié)。

其中也發(fā)現(xiàn)了網(wǎng)上(中文)關(guān)于這方面的一個問題。很少有講的或講清楚的。

首先為什么要使用PYMONGO,主要的原因是他是官方推出的PYTHON API,怎么安裝pymongo這與python有關(guān),這里有一個事情就是安裝pymongo 也是可以選擇版本的, 需要根據(jù)你的生產(chǎn)環(huán)境安裝的pymongo的版本,來對應(yīng)你的變成的環(huán)境。

如何使用pymongo來連接mongo各種的形態(tài)

如何使用pymongo來連接mongo各種的形態(tài)

雖然小版本的不同不會造成什么困擾,但最好還是要統(tǒng)一的python for mongodb api 的版本。

如何使用pymongo來連接mongo各種的形態(tài)

上面使用了python3 ,并且使用了pymongo API 連接 mongodb的兩種的格式,但這樣的使用方式與實際相差甚遠,屬于模型和實體之間的差別,WHY

1 你的MONGODB 如果是單機,難道沒有用戶名密碼

2 你的MONGODB  如果不是單機,是復(fù)制集怎么連接,怎么read prefer which one ,有沒有線程池,等等問題

1 如果是單機,但有用戶名密碼怎么辦

如何使用pymongo來連接mongo各種的形態(tài)

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import pymongo
import datetime
from pymongo import MongoClient

client = MongoClient('mongodb://admin:1234.com@192.168.198.56:27087/admin')

print (client)

那么使用pymongo 中的 mongoclient 使用MONGODB 標(biāo)準(zhǔn)的連接方式放到括號并用單引號標(biāo)注就可以成功連接了

但大部分連接MONGODB的時候是復(fù)制集,這也是出問題最多的地方,網(wǎng)上大部分的要不不介紹,要不就還用mongoClient 繼續(xù)偽裝連接 mongodb的復(fù)制集中的某臺機器。

如何使用pymongo來連接mongo各種的形態(tài)

上圖雖然可以連接并可以操作mongodb 的復(fù)制集但實際上離實際上的真正靈活的操作復(fù)制集還差的遠。

1  連接沒有驗證是否成功,這里不是上面的連接不報錯,就說明連接成功了,恰恰是錯誤,報錯會在你實體操作MONGODB 的時候,才能反映出來。這就說明,我們在連接MONGODB 的時候,必須要進行一個判斷。按理說pymongo 連接如果情況異常是應(yīng)該產(chǎn)生一些錯誤的。

為什么從3.0版本開始,MongoClient構(gòu)造函數(shù)在連接服務(wù)器時不再阻塞,如果它們不可用,它也不再引發(fā)ConnectionFailure,如果用戶的憑證錯誤,它也不再引發(fā)配置錯誤。

如何使用pymongo來連接mongo各種的形態(tài)

首先上面的連接格式是mongodb 3.6后提出的 DNS seedlist connection format, 使用+srv連接字符串修飾符自動將連接的tls(或等效ssl)選項設(shè)置為true。您可以通過在查詢字符串中顯式地將tls(或等效的ssl)選項設(shè)置為false(或ssl=false)來覆蓋此行為。

那么問題來了按照標(biāo)準(zhǔn)的寫法,如果我不想按照PYMONGO 默認的設(shè)置,連接嘗試20秒嘗試后,在返回可以連接不可以連接,這樣的如果是失敗的連接我就要等待20秒,這顯然是不OK 的,

如何使用pymongo來連接mongo各種的形態(tài)

下面的寫法可以將復(fù)制集以及連接錯誤返回的速度調(diào)整到0.3秒

另外還有一些其他的參數(shù)可以添加進來

例如我想設(shè)置一個連接池最大連接10個 最小 保留2個連接  不使用 SSL 連接方式,并且讀的concernLevel 為大多數(shù),并且如果讀趨向于從庫




#!/usr/bin/python3
# -*- coding: utf-8 -*-
import pymongo
import datetime
from pymongo import MongoClient
from pymongo.errors import ConnectionFailure
client = MongoClient('mongodb://root:1234.Com@192.168.198.56:27027,192.168.198.56:27037,192.168.198.56:27047/'
                    '?replicaSet=repl&authSource=admin&connectTimeoutMS=300&ssl=false&minPoolSize=2&maxPoolSize=10'
                    '&readConcernLevel=majority&readPreference=secondary')

try:
   client.admin.command('ismaster')
   print ("connect ok")

except ConnectionFailure:

print("can't connect mongodb.")


下圖是讀的導(dǎo)向的幾種方式


如何使用pymongo來連接mongo各種的形態(tài)

所以pymongo 連接單機,復(fù)制集中以上的介紹基本上夠用,如果還想在進一步了解一些其他的參數(shù),可以訪問下面的官方網(wǎng)站

https://docs.mongodb.com/manual/reference/connection-string/

如何使用pymongo來連接mongo各種的形態(tài)

如何使用pymongo來連接mongo各種的形態(tài)

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI