Aracılığıyla paylaş


Python kullanarak MongoDB veritabanını yönetme

ŞUNLAR IÇIN GEÇERLIDIR: MongoDB

Azure Cosmos DB'deki MongoDB sunucunuz MongoDB için yaygın Python paketlerinden kullanılabilir:

Not

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

Veritabanını adlandırma

Azure Cosmos DB'de veritabanı bir ad alanına benzer. Veritabanı oluşturduğunuzda, veritabanı adı veritabanı kaynağına ve alt kaynaklara erişmek için kullanılan URI'nin bir kesimini oluşturur.

Bir veritabanını adlandırırken bazı hızlı kurallar şunlardır:

Oluşturulduktan sonra, bir veritabanının URI'si şu biçimdedir:

https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>

Veritabanı örneğini alma

Veritabanı koleksiyonları ve belgelerini barındırıyor. Veritabanına erişmek için MongoClient'ın öznitelik stili erişimini veya sözlük stili erişimini kullanın. Daha fazla bilgi için bkz . Veritabanı Alma.

Aşağıdaki kod parçacıkları, istemci bağlantınızı zaten oluşturduğunuzu ve bu kod parçacıklarından sonra istemci bağlantınızı kapattığınız varsayılır.

Sunucu bilgilerini alma

MongoClient sınıfının server_info yöntemiyle sunucu bilgilerine erişin. Bu bilgileri almak için veritabanı adını belirtmeniz gerekmez. Döndürülen bilgiler MongoDB'ye özgüdür ve Azure Cosmos DB platformunun kendisini temsil etmez.

Ayrıca MongoClient.list_database_names yöntemini kullanarak veritabanlarını listeleyebilir ve MongoClient.db.command yöntemiyle bir veritabanına MongoDB komutu vekleyebilirsiniz.

# Get server information
for k, v in client.server_info().items():
    print("Key: {} , Value: {}".format(k, v))

# Get server status of admin database
print("Server status {}".format(client.admin.command("serverStatus")))

# List databases
databases = client.list_database_names()
print("Databases: {}".format(databases))

Yukarıdaki kod parçacığı, çıktıyı aşağıdaki örnek konsol çıkışına benzer şekilde görüntüler:

Key: version , Value: 3.6.0
Key: versionArray , Value: [3, 6, 0, 0]
Key: bits , Value: 64
Key: maxBsonObjectSize , Value: 16777216
Key: ok , Value: 1.0
Server status {'ok': 1.0}
Databases: ['adventureworks']

Veritabanı var mı?

Python için PyMongo sürücüsü, eriştiğiniz sırada yoksa bir veritabanı oluşturur. Ancak bunun yerine MongoDB için Azure Cosmos DB API'sinde depolanan verileri yönetmek için MongoDB uzantısı komutlarını kullanmanızı öneririz. Yoksa yeni bir veritabanı oluşturmak için aşağıdaki kod parçacığında gösterildiği gibi veritabanı oluşturma uzantısını kullanın.

Veritabanını kullanmadan önce zaten var olup olmadığını görmek için list_database_names yöntemiyle geçerli veritabanlarının listesini alın.

# Get list of databases
databases = client.list_database_names()
if not databases:
    print("No databases found")

# Does database exist?
DB_NAME = "adventureworks"
if DB_NAME in databases:
    print("Database exists: {}".format(DB_NAME))
else:
    client[DB_NAME].command(
        {"customAction": "CreateDatabase", "offerThroughput": 400}
    )
    print("Created db '{}' with shared throughput.\n".format(DB_NAME))

Yukarıdaki kod parçacığı, çıktıyı aşağıdaki örnek konsol çıkışına benzer şekilde görüntüler:

Database exists: adventureworks

Veritabanlarının, koleksiyonların ve belge sayısının listesini alma

MongoDB sunucunuzu program aracılığıyla yönetirken, sunucuda hangi veritabanlarının ve koleksiyonların olduğunu ve her koleksiyonda kaç belge olduğunu bilmek yararlı olur. Daha fazla bilgi için bkz.

# Get list of databases
databases = client.list_database_names()

# Loop through databases
for db in databases:
    print("Database: {}".format(db))

    # Get list of collections
    collections = client[db].list_collection_names()

    # Loop through collections
    for col in collections:
        print("\tCollection: {}".format(col))

        # Get document count
        doc_count = client[db][col].count_documents({})
        print("\tDocument count: {}".format(doc_count))

Yukarıdaki kod parçacığı, çıktıyı aşağıdaki örnek konsol çıkışına benzer şekilde görüntüler:

Database: adventureworks
        Collection: products_new
        Document count: 1
        Collection: products
        Document count: 3
Database: testdb
        Collection: mycoll
        Document count: 1

Veritabanı nesne örneğini alma

Veritabanı yoksa, Python için PyMongo sürücüsü bu veritabanını eriştiğinde oluşturur. Ancak bunun yerine MongoDB için Azure Cosmos DB API'sinde depolanan verileri yönetmek için MongoDB uzantısı komutlarını kullanmanızı öneririz. Desen yukarıda Veritabanı var mı? bölümünde gösterilmiştir.

PyMongo ile çalışırken, MongoClient örneklerinde öznitelik stili erişimini kullanarak veritabanlarına erişebilirsiniz. Veritabanı örneğiniz olduktan sonra, aşağıda gösterildiği gibi veritabanı düzeyi işlemlerini kullanabilirsiniz.

collections = client[db].list_collection_names()

PyMongo sürücüsünü kullanarak veritabanlarıyla çalışmaya genel bakış için bkz . Veritabanı düzeyinde işlemler.

Veritabanını bırakma

MongoClient'ın drop_database yöntemi kullanılarak bir veritabanı sunucudan kaldırılır.

DB_NAME = input("Enter database name to drop: ")
if DB_NAME in client.list_database_names():
    print("Dropping database: {}".format(DB_NAME))
    client.drop_database(DB_NAME)
else:
    print("Didn't find database: {}".format(DB_NAME))

Yukarıdaki kod parçacığı, çıktıyı aşağıdaki örnek konsol çıkışına benzer şekilde görüntüler:

Enter database name to drop: adventureworks
Dropping database: adventureworks

Ayrıca bkz.