Manipulation d'Azure CosmosDB à partir de Python Part.2

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

Code du didacticiel

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>

Initialisation de CosmosClient

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.

Créer une nouvelle base de données

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`.

Créer un nouveau conteneur

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.

Ajouter au conteneur

for family_item in family_items_to_create:
    container.create_item(body=family_item)

Entrez maintenant la valeur de «Family_item» dans le conteneur.

Lecture de points

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

Un petit arrangement

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. image.png

Impressions

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

Manipulation d'Azure CosmosDB à partir de Python Part.2
Utilisation d'Azure CosmosDB à partir de Python (démarrage rapide de l'exploration)
Traitement d'image avec Python (partie 2)
Etudier Python avec freeCodeCamp part1
Images en bordure avec python Partie 1
BigQuery-Python s'est avéré utile lors de l'utilisation de BigQuery à partir de Python
Grattage avec Selenium + Python Partie 1
Exploitez LibreOffice avec Python
Python: travailler avec Firefox avec du sélénium
Gérer les sons en Python
Etudier Python avec freeCodeCamp part2
Traitement d'image avec Python (partie 1)
Résolution de Nampre avec Python (partie 2)
Traitement d'image avec Python (3)
Grattage avec Selenium + Python Partie 2
Avec skype, notifiez avec skype de python!
Jouez des nombres manuscrits avec Python Partie 1
Appeler C depuis Python avec DragonFFI
Utilisation de Rstan de Python avec PypeR
Travailler avec LibreOffice en Python: import
[Automatisé avec python! ] Partie 1: fichier de configuration
Installez Python à partir des sources avec Ansible
Exécutez Aprili depuis Python sur Orange
Utiliser Azure Blob Storage à partir de Python
Appelez python de nim avec Nimpy
Automatisez des tâches simples avec Python Part0
[Automatisé avec python! ] Partie 2: Fonctionnement des fichiers
Charger fbx depuis python avec cinema4d
Travailler avec des images DICOM en Python
Essai de la reconnaissance vocale à l'aide d'Azure avec Python (entrée depuis le microphone)
Collecter des informations sur Twitter avec Python (API Twitter)
Recevoir des données textuelles de mysql avec python
Obtenir le code HTML de l'élément avec du sélénium Python
Lire un fichier audio à partir de Python avec interruption
Créez wordcloud à partir de votre tweet avec python3
Jouez des nombres manuscrits avec python, partie 2 (identifier)
Traiter les données Pubmed .xml avec python [Partie 2]
Essayez de travailler avec des données binaires en Python
Automatisez des tâches simples avec Python Part1 Scraping
Tweet de python avec Twitter Developer + Tweepy
Efficacité commerciale à partir de zéro avec Python
Décrypter les fichiers cryptés avec openssl depuis python avec openssl
Travailler avec OpenStack à l'aide du SDK Python
Acquisition d'images depuis une caméra avec Python + OpenCV
100 traitements de langage avec Python (chapitre 2, partie 1)
Premiers pas avec Dynamo de Python boto
Modulation et démodulation FM avec Python Partie 2
[Azure] Hit Custom Vision Service avec Python
Essayez d'appeler Python depuis Ruby avec une économie
Scraping depuis un site authentifié avec python
[Part1] Scraping avec Python → Organisez jusqu'à csv!
Utilisation des fonctions C ++ de python avec pybind11
Utiliser Python et MeCab avec Azure Functions
Travailler avec le GPS en Python pour Raspberry Pi 3
QGIS + Python Partie 2
Collecter des informations depuis Twitter avec Python (construction de l'environnement)