Aracılığıyla paylaş


MongoDB ve Python için Azure Cosmos DB ile çalışmaya başlama

ŞUNLAR IÇIN GEÇERLIDIR: MongoDB

Bu makalede, PyMongo sürücü paketini kullanarak MongoDB için Azure Cosmos DB'ye nasıl bağlanabileceğiniz gösterilmektedir. Bağlandıktan sonra veritabanları, koleksiyonlar ve belgeler üzerinde işlemler gerçekleştirebilirsiniz.

Not

Örnek kod parçacıkları GitHub'da Python projesi olarak kullanılabilir.

Bu makalede, Python, PyMongo için açık kaynak MongoDB istemci sürücülerinden birini kullanarak MongoDB için Azure Cosmos DB API'si ile nasıl iletişim kurabileceğiniz gösterilmektedir.

Önkoşullar

Yeni python uygulaması oluşturma

  1. Tercih ettiğiniz terminali kullanarak yeni bir boş klasör oluşturun ve dizini klasör olarak değiştirin.

    Not

    Yalnızca tamamlanmış kodu istiyorsanız, tam örneği içeren örnek kod parçacıkları depoyu indirin veya çatallayın ve kopyalayın. Azure Cloud Shell'deki depoyu da git clone kullanarak bu hızlı başlangıçta gösterilen adımları izleyebilirsiniz.

  2. PyMongo ve python-dotenv paketlerini listeleyen bir requirements.txt dosyası oluşturun. Paket dotenv , yerel geliştirme sırasında bir .env dosyadan ortam değişkenlerini okumak için kullanılır.

    # requirements.txt
    pymongo
    python-dotenv
    
  3. Sanal bir ortam oluşturun ve paketleri yükleyin.

    # py -3 uses the global python interpreter. You can also use python3 -m venv .venv.
    py -3 -m venv .venv
    source .venv/Scripts/activate   
    pip install -r requirements.txt
    

MongoDB için Azure Cosmos DB'ye PyMongo sürücüsüyle bağlanma

PyMongo sürücüsüyle Azure Cosmos DB'ye bağlanmak için MongoClient nesnesinin bir örneğini oluşturun. Bu sınıf, veritabanlarında tüm işlemleri gerçekleştirmek için başlangıç noktasıdır.

MongoClient için en yaygın oluşturucu, yalnızca host bu makalede ortam değişkenine ayarlanmış olan parametresini COSMOS_CONNECTION_STRING gerektirir. Oluşturucuda kullanabileceğiniz başka isteğe bağlı parametreler ve anahtar sözcük parametreleri vardır. İsteğe bağlı parametrelerin çoğu parametresiyle host de belirtilebilir. ve parametresiyle host aynı seçenek geçirilirse, parametre önceliklidir.

Bağlantı sorunları için Sorun giderme kılavuzuna bakın.

Kaynak adını alma

Aşağıdaki komutlarda kaynak grubu adı olarak msdocs-cosmos göstereceğiz. Adı durumunuz için uygun şekilde değiştirin.

  1. resourceGroupName için bir kabuk değişkeni oluşturun.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos"
    
  2. az cosmosdb list Komutunu kullanarak kaynak grubunuzdaki ilk Azure Cosmos DB hesabının adını alın ve accountName kabuk değişkeninde depolayın.

    # Retrieve most recently created account name
    accountName=$(
        az cosmosdb list \
            --resource-group $resourceGroupName \
            --query "[0].name" \
            --output tsv
    )
    

Bağlantı dizenizi alma

  1. Komutuyla hesabın bağlantı dizesi listesinden MongoDB bağlantı dizesi API'sini az cosmosdb keys list bulun.

    az cosmosdb keys list --type connection-strings \
        --resource-group $resourceGroupName \
        --name $accountName 
    
  2. BİRİnCİl ANAHTAR değerlerini kaydedin. Bu kimlik bilgilerini daha sonra kullanacaksınız.

Ortam değişkenlerini yapılandırma

Kodunuzda CONNECTION STRING değerlerini kullanmak için bu değeri uygulamayı çalıştıran yerel ortamda ayarlayın. Ortam değişkenini ayarlamak için tercih ettiğiniz terminali kullanarak aşağıdaki komutları çalıştırın:

$env:COSMOS_CONNECTION_STRING = "<cosmos-connection-string>"

bağlantı dizesi ile MongoClient oluşturma

  1. PyMongo ve python-dotenv paketlerine başvurmak için bağımlılıklar ekleyin.

    import os
    import sys
    
    import pymongo
    from dotenv import load_dotenv
    
  2. Oluşturucuyu ve ortam değişkeninden okunan bağlantı dizesi kullanarak sınıfının yeni bir örneğini MongoClient tanımlayın.

    load_dotenv()
    CONNECTION_STRING = os.environ.get("COSMOS_CONNECTION_STRING")
    client = pymongo.MongoClient(CONNECTION_STRING)
    
    for prop, value in vars(client.options).items():
        print("Property: {}: Value: {} ".format(prop, value))
    

Örnek oluşturmanın MongoClient farklı yolları hakkında daha fazla bilgi için bkz . MongoClient ile Bağlantı Kurma.

MongoClient bağlantısını kapatma

Uygulamanız bağlantıyla bittiğinde uygulamayı kapatmayı unutmayın. Bu .close() çağrı, tüm veritabanı çağrıları yapıldıktan sonra olmalıdır.

client.close()

MongoDB için API için Azure Cosmos DB ile MongoDB istemci sınıflarını kullanma

Uygulamayı oluşturmaya başlamadan önce Azure Cosmos DB'deki kaynak hiyerarşisini inceleyelim. Azure Cosmos DB'de kaynak oluşturmak ve kaynaklara erişmek için kullanılan belirli bir nesne modeli vardır. Azure Cosmos DB, hesaplar, veritabanları, koleksiyonlar ve belgelerden oluşan bir hiyerarşide kaynaklar oluşturur.

Hesaplar, veritabanları, koleksiyonlar ve belgeler de dahil olmak üzere MongoDB için Azure Cosmos DB hiyerarşisinin diyagramı.

En üstte MongoDB için Azure Cosmos DB hesabını gösteren hiyerarşik diyagram. Hesabın iki alt veritabanı düğümü vardır. Veritabanı düğümlerinden biri iki alt koleksiyon düğümü içerir. Diğer veritabanı düğümü tek bir alt koleksiyon düğümü içerir. Bu tek koleksiyon düğümünde üç alt belge düğümü vardır.

Her kaynak türü bir veya daha fazla ilişkili Python sınıfıyla temsil edilir. En yaygın sınıfların listesi aşağıdadır:

  • MongoClient - PyMongo ile çalışırken ilk adım, MongoDB için Azure Cosmos DB API'sine bağlanmak üzere bir MongoClient oluşturmaktır. İstemci nesnesi, hizmette istekleri yapılandırmak ve yürütmek için kullanılır.

  • Veritabanı - MongoDB için Azure Cosmos DB API'si bir veya daha fazla bağımsız veritabanını destekleyebilir.

  • Koleksiyon - Bir veritabanı bir veya daha fazla koleksiyon içerebilir. Koleksiyon, MongoDB'de depolanan bir belge grubudur ve kabaca ilişkisel veritabanındaki bir tablonun eşdeğeri olarak düşünülebilir.

  • Belge - Belge, anahtar-değer çiftleri kümesidir. Belgelerin dinamik şeması vardır. Dinamik şema, aynı koleksiyondaki belgelerin aynı alan veya yapı kümesine sahip olması gerekmeyecek anlamına gelir. Ayrıca bir koleksiyonun belgelerindeki ortak alanlar farklı veri türlerini barındırabilir.

Varlıkların hiyerarşisi hakkında daha fazla bilgi edinmek için Azure Cosmos DB kaynak modeli makalesine bakın.

Ayrıca bkz.

Sonraki adımlar

MongoDB hesabı için bir API'ye bağlandığınıza göre, veritabanlarını oluşturmak ve yönetmek için sonraki kılavuzu kullanın.