Ich möchte vom letzten Mal an etwas tiefer in den Code eintauchen. Letztes Verfahren → https://qiita.com/komiyasa/items/ae34fd9fec46c0e01b35
Das Folgende ist das Ganze. Legen Sie in diesem Fall den Namen der Datenbank und den Namen des Containers fest. Es scheint, dass der spezifische Inhalt in einer anderen Python-Datei festgelegt ist.
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)
Der Endpunkt und der Schlüssel werden hier festgelegt. Legen Sie den Wert für den Client fest, indem Sie den Schlüssel der bereitgestellten Cosmos-Datenbank vom Azure-Portal abrufen.
database_name = 'AzureSampleFamilyDatabase'
database = client.create_database_if_not_exists(id=database_name)
Ich erstelle eine neue Datenbank mit der Bedingung, dass ich keinen Namen trage, wenn es keinen Namen gibt. Hier haben wir eine Datenbank namens "AzureSampleFamilyDatabase" erstellt.
container_name = 'FamilyContainer'
container = database.create_container_if_not_exists(
id=container_name,
partition_key=PartitionKey(path="/lastName"),
offer_throughput=400
)
Erstellen Sie nun einen Container mit dem Namen "FamilyContainer". Dies ist auch bedingt, wenn nicht.
for family_item in family_items_to_create:
container.create_item(body=family_item)
Geben Sie nun den Wert von Family_item
in den Container ein.
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)))
##Abfrageausführung mit SQL-Abfragesyntax
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))
Am einfachsten ist es, den Datenbanknamen und den Containernamen in diesem Code zu ändern und zu prüfen, ob die Änderungen im Azure-Portal übernommen werden. Es ist ein bisschen, aber lassen Sie es uns so ändern.
database_name = 'AzureSampleFamilyDatabase2'
database = client.create_database_if_not_exists(id=database_name)
Das Ausgabeergebnis des Befehls lautet wie folgt.
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
Wenn Sie sich das Azure-Portal ansehen, werden Sie feststellen, dass eine Datenbank mit dem neuen Namen mit demselben Inhalt erstellt wurde.
Dies ist ein praktischer Beispielcode, da er sehr einfach zu verwenden ist und intuitiv bereitgestellt werden kann. Beim nächsten Mal möchte ich die Lösch- / Aktualisierungsmethode in SQL mithilfe des Azure Python SDK überprüfen.
Recommended Posts