本指南將引導你如何建立一個 Python 主控台應用程式,以連接到 Azure DocumentDB 叢集。 您可以設定開發環境、使用 azure.identity 適用於 Python 的 Azure SDK 套件進行驗證,以及執行建立、查詢和更新檔等作業。
先決條件
Azure 訂用帳戶
- 如果您沒有 Azure 訂用帳戶,請建立 免費帳戶
一個現有的 Azure DocumentDB 叢集
- 如果你沒有叢集,就建立 一個新的叢集
使用 Azure Cloud Shell 中的 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱 如何在 Docker 容器中執行 Azure CLI。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
設定主控台應用程式
接下來,建立新的主控台應用程式專案,並匯入必要的函式庫來驗證您的叢集。
為您的專案建立新的目錄,並設定虛擬環境。
mkdir mongodb-app cd mongodb-app python -m venv .venv啟用虛擬環境。
# On Windows .venv\Scripts\activate # On macOS/Linux source .venv/bin/activate為您的應用程式建立新的 Python 檔案。
touch app.py為 Azure 驗證安裝
azure.identity庫。pip install azure.identity安裝適用於 Python 的
pymongo驅動程式。pip install pymongo
連接至叢集
現在,使用 Azure.Identity 庫取得 TokenCredential,以用來連線到您的叢集。 官方 MongoDB 驅動程式有一個特殊的介面,必須實作才能從 Microsoft Entra 取得令牌,以在連線到叢集時使用。
在 Python 檔案頂端匯入必要的模組。
from azure.identity import DefaultAzureCredential from pymongo import MongoClient from pymongo.auth_oidc import OIDCCallback, OIDCCallbackContext, OIDCCallbackResult建立實作 MongoDB OpenID Connect (OIDC) 回呼介面的自定義類別。
class AzureIdentityTokenCallback(OIDCCallback): def __init__(self, credential): self.credential = credential def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult: token = self.credential.get_token( "https://ossrdbms-aad.database.windows.net/.default").token return OIDCCallbackResult(access_token=token)設定您的叢集名稱變數。
clusterName = "<azure-documentdb-cluster-name>"建立 DefaultAzureCredential 的實例,並設定驗證屬性。
credential = DefaultAzureCredential() authProperties = {"OIDC_CALLBACK": AzureIdentityTokenCallback(credential)}建立使用 Microsoft Entra 驗證設定的 MongoDB 用戶端。
client = MongoClient( f"mongodb+srv://{clusterName}.global.mongocluster.cosmos.azure.com/", connectTimeoutMS=120000, tls=True, retryWrites=True, authMechanism="MONGODB-OIDC", authMechanismProperties=authProperties ) print("Client created")
執行一般作業
最後,使用官方程式庫處理資料庫、集合和文件的常見工作。 在這裡,您可以使用與 MongoDB 或 DocumentDB 互動的相同類別和方法來管理您的集合和專案。
取得您資料庫的參考。
database = client.get_database("<database-name>") print("Database pointer created")取得您集合的參考。
collection = database.get_collection("<container-name>") print("Collection pointer created")建立文件,並將其搭配
collection.update_oneupsert 至集合。new_document = { "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "category": "gear-surf-surfboards", "name": "Yamba Surfboard", "quantity": 12, "price": 850.00, "clearance": False, } filter = { "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", } payload = { "$set": new_document } result = collection.update_one(filter, payload, upsert=True)使用
collection.find_one從集合擷取特定檔。filter = { "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "category": "gear-surf-surfboards" } existing_document = collection.find_one(filter) print(f"Read document _id:\t{existing_document['_id']}")查詢符合
collection.find篩選條件的多個檔。filter = { "category": "gear-surf-surfboards" } matched_documents = collection.find(filter) for document in matched_documents: print(f"Found document:\t{document}")