1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
import azure.cosmos.cosmos_client as cosmos_client
import azure.cosmos.exceptions as exceptions
import config
# ----------------------------------------------------------------------------------------------------------
# Prerequistes -
#
# 1. An Azure Cosmos account -
# https://docs.microsoft.com/azure/cosmos-db/create-sql-api-python#create-a-database-account
#
# 2. Microsoft Azure Cosmos PyPi package -
# https://pypi.python.org/pypi/azure-cosmos/
# ----------------------------------------------------------------------------------------------------------
# Sample - demonstrates the basic CRUD operations on a Database resource for Azure Cosmos
#
# 1. Query for Database (QueryDatabases)
#
# 2. Create Database (CreateDatabase)
#
# 3. Get a Database by its Id property (ReadDatabase)
#
# 4. List all Database resources on an account (ReadDatabases)
#
# 5. Delete a Database given its Id property (DeleteDatabase)
# ----------------------------------------------------------------------------------------------------------
HOST = config.settings['host']
MASTER_KEY = config.settings['master_key']
DATABASE_ID = config.settings['database_id']
def find_database(client, id):
print('1. Query for Database')
databases = list(client.query_databases({
"query": "SELECT * FROM r WHERE r.id=@id",
"parameters": [
{ "name":"@id", "value": id }
]
}))
if len(databases) > 0:
print('Database with id \'{0}\' was found'.format(id))
else:
print('No database with id \'{0}\' was found'. format(id))
def create_database(client, id):
print("\n2. Create Database")
try:
client.create_database(id=id)
print('Database with id \'{0}\' created'.format(id))
except exceptions.CosmosResourceExistsError:
print('A database with id \'{0}\' already exists'.format(id))
def read_database(client, id):
print("\n3. Get a Database by id")
try:
database = client.get_database_client(id)
print('Database with id \'{0}\' was found, it\'s link is {1}'.format(id, database.database_link))
except exceptions.CosmosResourceNotFoundError:
print('A database with id \'{0}\' does not exist'.format(id))
def list_databases(client):
print("\n4. List all Databases on an account")
print('Databases:')
databases = list(client.list_databases())
if not databases:
return
for database in databases:
print(database['id'])
def delete_database(client, id):
print("\n5. Delete Database")
try:
client.delete_database(id)
print('Database with id \'{0}\' was deleted'.format(id))
except exceptions.CosmosResourceNotFoundError:
print('A database with id \'{0}\' does not exist'.format(id))
def run_sample():
client = cosmos_client.CosmosClient(HOST, {'masterKey': MASTER_KEY} )
try:
# query for a database
find_database(client, DATABASE_ID)
# create a database
create_database(client, DATABASE_ID)
# get a database using its id
read_database(client, DATABASE_ID)
# list all databases on an account
list_databases(client)
# delete database by id
delete_database(client, DATABASE_ID)
except exceptions.CosmosHttpResponseError as e:
print('\nrun_sample has caught an error. {0}'.format(e.message))
finally:
print("\nrun_sample done")
if __name__ == '__main__':
run_sample()
|