Dans la continuité de la dernière fois, j'aimerais approfondir un peu le code. Dernières procédures → https://qiita.com/komiyasa/items/ae34fd9fec46c0e01b35
Ce qui suit est le tout. Dans cet ensemble, définissez le nom de la base de données et le nom du conteneur. Il semble que le contenu spécifique soit défini dans un autre fichier Python.
Program.py
from azure.cosmos import exceptions, CosmosClient, PartitionKey
import family
# Initialize the Cosmos client
endpoint = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
# <create_cosmos_client>
client = CosmosClient(endpoint, key)
# </create_cosmos_client>
# Create a database
# <create_database_if_not_exists>
database_name = 'AzureSampleFamilyDatabase'
database = client.create_database_if_not_exists(id=database_name)
# </create_database_if_not_exists>
# Create a container
# Using a good partition key improves the performance of database operations.
# <create_container_if_not_exists>
container_name = 'FamilyContainer'
container = database.create_container_if_not_exists(
id=container_name,
partition_key=PartitionKey(path="/lastName"),
offer_throughput=400
)
# </create_container_if_not_exists>
# Add items to the container
family_items_to_create = [family.get_andersen_family_item(), family.get_johnson_family_item(), family.get_smith_family_item(), family.get_wakefield_family_item()]
# <create_item>
for family_item in family_items_to_create:
container.create_item(body=family_item)
# </create_item>
# Read items (key value lookups by partition key and id, aka point reads)
# <read_item>
for family in family_items_to_create:
item_response = container.read_item(item=family['id'], partition_key=family['lastName'])
request_charge = container.client_connection.last_response_headers['x-ms-request-charge']
print('Read item with id {0}. Operation consumed {1} request units'.format(item_response['id'], (request_charge)))
# </read_item>
# Query these items using the SQL query syntax.
# Specifying the partition key value in the query allows Cosmos DB to retrieve data only from the relevant partitions, which improves performance
# <query_items>
query = "SELECT * FROM c WHERE c.lastName IN ('Wakefield', 'Andersen')"
items = list(container.query_items(
query=query,
enable_cross_partition_query=True
))
request_charge = container.client_connection.last_response_headers['x-ms-request-charge']
print('Query returned {0} items. Operation consumed {1} request units'.format(len(items), request_charge))
# </query_items>
client = CosmosClient(endpoint, key)
Le point de terminaison et la clé sont définis ici. Définissez la valeur sur client en obtenant la clé du Cosmos DB déployé à partir du portail Azure.
database_name = 'AzureSampleFamilyDatabase'
database = client.create_database_if_not_exists(id=database_name)
Je crée une nouvelle base de données, à condition que s'il n'y a pas de nom que je porte. Ici, j'ai créé une base de données appelée ʻAzureSampleFamilyDatabase`.
container_name = 'FamilyContainer'
container = database.create_container_if_not_exists(
id=container_name,
partition_key=PartitionKey(path="/lastName"),
offer_throughput=400
)
Créez maintenant un conteneur nommé «FamilyContainer». Ceci est également conditionnel sinon.
for family_item in family_items_to_create:
container.create_item(body=family_item)
Entrez maintenant la valeur de «Family_item» dans le conteneur.
for family in family_items_to_create:
item_response = container.read_item(item=family['id'], partition_key=family['lastName'])
request_charge = container.client_connection.last_response_headers['x-ms-request-charge']
print('Read item with id {0}. Operation consumed {1} request units'.format(item_response['id'], (request_charge)))
##Exécution de requête à l'aide de la syntaxe de requête SQL
query = "SELECT * FROM c WHERE c.lastName IN ('Wakefield', 'Andersen')"
items = list(container.query_items(
query=query,
enable_cross_partition_query=True
))
request_charge = container.client_connection.last_response_headers['x-ms-request-charge']
print('Query returned {0} items. Operation consumed {1} request units'.format(len(items), request_charge))
L'arrangement le plus simple consiste à modifier le nom de la base de données et le nom du conteneur dans ce code et de voir si les modifications sont reflétées dans le portail Azure. C'est un peu, mais changeons les choses comme ça.
database_name = 'AzureSampleFamilyDatabase2'
database = client.create_database_if_not_exists(id=database_name)
Le résultat de sortie de la commande est le suivant.
PS C:\Users\komiyasa\Val\sample\azure-cosmos-db-python-getting-started> python .\cosmos_get_started.py
Read item with id Andersen_c23dcf0d-de55-43eb-afbe-e102ebb22dcc. Operation consumed 1 request units
Read item with id Smith_efc4369e-0c4b-4609-8dfc-6799df71f07d. Operation consumed 1 request units
Read item with id Johnson_d84a50c0-ce2e-4b53-a3e9-08104a1a1b7d. Operation consumed 1 request units
Read item with id Wakefield_a667cfc4-a266-4b63-a104-a27e636039e8. Operation consumed 1 request units
Si vous regardez le portail Azure, vous verrez qu'une base de données avec le nouveau nom a été créée, avec le même contenu.
Il s'agit d'un exemple de code pratique car il est très facile à utiliser et peut être déployé de manière intuitive. La prochaine fois, j'aimerais vérifier la méthode Delete / Update dans SQL à l'aide du SDK Azure Python.
Recommended Posts