Udostępnij za pośrednictwem


Zarządzanie bazą danych MongoDB przy użyciu języka Python

DOTYCZY: Mongodb

Serwer MongoDB w usłudze Azure Cosmos DB jest dostępny z popularnych pakietów języka Python dla bazy danych MongoDB, takich jak:

  • PyMongo dla synchronicznych aplikacji języka Python i używanych w tym artykule.
  • Silnik dla aplikacji asynchronicznych języka Python.

Uwaga

Przykładowe fragmenty kodu są dostępne w witrynie GitHub jako projekt języka Python.

Nazwij bazę danych

W usłudze Azure Cosmos DB baza danych jest analogiczna do przestrzeni nazw. Podczas tworzenia bazy danych nazwa bazy danych tworzy segment identyfikatora URI używanego do uzyskiwania dostępu do zasobu bazy danych i wszystkich zasobów podrzędnych.

Poniżej przedstawiono kilka szybkich reguł podczas nazewnictwa bazy danych:

  • Zachowaj nazwy baz danych o długości od 3 do 63 znaków
  • Nazwy baz danych mogą zawierać tylko małe litery, cyfry lub znak kreski (-).
  • Nazwy baz danych muszą zaczynać się od małej litery lub cyfry.

Po utworzeniu identyfikator URI bazy danych ma następujący format:

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

Pobieranie wystąpienia bazy danych

Baza danych przechowuje kolekcje i ich dokumenty. Aby uzyskać dostęp do bazy danych, użyj dostępu stylu atrybutu lub dostępu do stylu słownika obiektu MongoClient. Aby uzyskać więcej informacji, zobacz Getting a Database (Uzyskiwanie bazy danych).

W poniższych fragmentach kodu założono, że połączenie klienta zostało już utworzone i zamknięcie połączenia klienta po wykonaniu tych fragmentów kodu.

Pobieranie informacji o serwerze

Uzyskaj dostęp do informacji o serwerze za pomocą metody server_info klasy MongoClient. Nie musisz określać nazwy bazy danych, aby uzyskać te informacje. Zwrócone informacje są specyficzne dla bazy danych MongoDB i nie reprezentują samej platformy Usługi Azure Cosmos DB.

Możesz również wyświetlić listę baz danych przy użyciu metody MongoClient.list_database_names i wydać polecenie bazy danych MongoDB do bazy danych za pomocą metody MongoClient.db.command .

# 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))

Powyższy fragment kodu wyświetla dane wyjściowe podobne do następujących przykładowych danych wyjściowych konsoli:

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']

Czy baza danych istnieje?

Sterownik PyMongo dla języka Python tworzy bazę danych, jeśli nie istnieje podczas uzyskiwania do niej dostępu. Zalecamy jednak, aby zamiast tego używać poleceń rozszerzenia MongoDB do zarządzania danymi przechowywanymi w interfejsie API usługi Azure Cosmos DB dla bazy danych MongoDB. Aby utworzyć nową bazę danych, jeśli nie istnieje, użyj rozszerzenia utwórz bazę danych , jak pokazano w poniższym fragmencie kodu.

Aby sprawdzić, czy baza danych już istnieje przed jej użyciem, pobierz listę bieżących baz danych za pomocą metody list_database_names .

# 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))

Powyższy fragment kodu wyświetla dane wyjściowe podobne do następujących przykładowych danych wyjściowych konsoli:

Database exists: adventureworks

Pobieranie listy baz danych, kolekcji i liczby dokumentów

Podczas programowego zarządzania serwerem Bazy danych MongoDB warto wiedzieć, jakie bazy danych i kolekcje znajdują się na serwerze oraz ile dokumentów w każdej kolekcji. Aby uzyskać więcej informacji, zobacz:

# 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))

Powyższy fragment kodu wyświetla dane wyjściowe podobne do następujących przykładowych danych wyjściowych konsoli:

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

Pobieranie wystąpienia obiektu bazy danych

Jeśli baza danych nie istnieje, sterownik PyMongo dla języka Python tworzy go podczas uzyskiwania do niej dostępu. Zalecamy jednak, aby zamiast tego używać poleceń rozszerzenia MongoDB do zarządzania danymi przechowywanymi w interfejsie API usługi Azure Cosmos DB dla bazy danych MongoDB. Wzorzec jest wyświetlany powyżej w sekcji Czy baza danych istnieje?.

Podczas pracy z narzędziem PyMongo uzyskujesz dostęp do baz danych przy użyciu dostępu stylu atrybutu w wystąpieniach bazy danych MongoClient. Po utworzeniu wystąpienia bazy danych możesz użyć operacji na poziomie bazy danych, jak pokazano poniżej.

collections = client[db].list_collection_names()

Aby zapoznać się z omówieniem pracy z bazami danych przy użyciu sterownika PyMongo, zobacz Operacje na poziomie bazy danych.

Usuwanie bazy danych

Baza danych jest usuwana z serwera przy użyciu metody drop_database elementu MongoClient.

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))

Powyższy fragment kodu wyświetla dane wyjściowe podobne do następujących przykładowych danych wyjściowych konsoli:

Enter database name to drop: adventureworks
Dropping database: adventureworks

Zobacz też