[Python] 透過pymongo連線docker中並開啟了副本集的mongodb資料庫

夜歌乘年少發表於2024-08-14

需要指定 directConnection=true&authSource=atp-test 引數,,否則會報連線副本集超時。

在 PyMongo 中,directConnection 引數可以決定客戶端是否直接連線到 MongoDB 伺服器,而不是自動發現所有的副本整合員。當 directConnection 設定為 true 時,客戶端將只連線到 MongoDB 連線字串中指定的伺服器。
這個引數在某些情況下可能會有用,例如當你的應用無法訪問副本集中的所有成員時。但請注意,當 directConnection 設定為 true 時,如果你指定的伺服器不可用,客戶端將無法自動切換到其他副本整合員。

在 MongoDB 中,authSource 引數用於指定進行身份驗證的資料庫。當你的使用者在一個特定的資料庫中建立,而你需要在另一個資料庫中進行操作時,這個引數就會非常有用。
例如,假設你在 admin 資料庫中建立了一個使用者,但你需要使用這個使用者來訪問 atp-test 資料庫。在這種情況下,你可以在連線字串中設定 authSource=admin,這樣 MongoDB 就會在 admin 資料庫中驗證使用者的憑證,但實際的操作會在 test 資料庫中進行。

from pymongo import MongoClient

# 建立一個 MongoClient 例項
client = MongoClient("mongodb://<username>:<password>@<host_ip>:<host_port>/?directConnection=true&authSource=atp-test")

# 選擇一個資料庫
db = client["test"]

# 選擇一個集合
collection = db["execute_record"]

# 執行一個查詢
documents = collection.find().limit(1000).skip(0)
print(documents)
for index in documents:
    print(index)

client.close()

相關文章