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 asynchronicznych aplikacji 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:
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 do stylu atrybutu lub dostępu do stylu słownika obiektu MongoClient. Aby uzyskać więcej informacji, zobacz Pobieranie bazy danych.
W poniższych fragmentach kodu przyjęto założenie, że połączenie klienta zostało już utworzone i zamknięcie połączenia klienta po fragmentach 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, gdy uzyskujesz do niej dostęp. 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 pokazany powyżej w sekcji Czy baza danych istnieje?.
Podczas pracy z usługą PyMongo uzyskujesz dostęp do baz danych przy użyciu dostępu do 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 obiektu 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