Partager via


DatabaseProxy Classe

Interface permettant d’interagir avec une base de données spécifique.

Cette classe ne doit pas être instanciée directement. Utilisez plutôt la <xref:azure.cosmos.aio.cosmos_client.CosmosClient.get_database_client> méthode pour obtenir une base de données existante ou la <xref:azure.cosmos.aio.cosmos_client.CosmosClient.create_database> méthode pour créer une base de données.

Une base de données contient un ou plusieurs conteneurs, chacun pouvant contenir des éléments, des procédures stockées, des déclencheurs et des fonctions définies par l’utilisateur.

Une base de données peut également avoir des utilisateurs associés, chacun étant configuré avec un ensemble d’autorisations pour accéder à certains conteneurs, procédures stockées, déclencheurs, fonctions définies par l’utilisateur ou éléments.

Une base de données d’API SQL Azure Cosmos DB possède les propriétés générées par le système suivantes. Ces propriétés sont en lecture seule :

  • _rid : ID de ressource.

  • _ts : date de la dernière mise à jour de la ressource. La valeur est un horodateur.

  • _self : URI adressable unique pour la ressource.

  • _etag : etag de ressource requis pour le contrôle d’accès concurrentiel optimiste.

  • _colls : chemin adressable de la ressource de collections.

  • _users : chemin adressable de la ressource users.

Héritage
builtins.object
DatabaseProxy

Constructeur

DatabaseProxy(client_connection: CosmosClientConnection, id: str, properties: Dict[str, Any] = None)

Paramètres

client_connection
<xref:azure.cosmos.aio.CosmosClientConnection>
Obligatoire

Client à partir duquel cette base de données a été récupérée.

id
str
Obligatoire

ID (nom) de la base de données.

properties
valeur par défaut: None

Variables

id

ID (nom) de la base de données.

Méthodes

create_container

Créez un conteneur avec l’ID (nom) donné.

Si un conteneur avec l’ID donné existe déjà, une erreur CosmosResourceExistsError est levée.

create_container_if_not_exists

Créez un conteneur s’il n’existe pas déjà.

Si le conteneur existe déjà, les paramètres existants sont retournés. Remarque : il ne case activée ni ne met à jour les paramètres de conteneur existants ni le débit d’offre s’ils diffèrent de ce qui a été passé dans la méthode.

create_user

Créez un utilisateur dans le conteneur.

Pour mettre à jour ou remplacer un utilisateur existant, utilisez la <xref:ContainerProxy.upsert_user> méthode .

delete_container

Supprimer un conteneur.

delete_user

Supprimez l’utilisateur spécifié du conteneur.

get_container_client

Obtenez un ContainerProxy pour un conteneur avec l’ID (nom) spécifié.

get_throughput

Obtenez l’objet ThroughputProperties pour cette base de données.

Si aucune propriété de débit n’existe déjà pour la base de données, une exception est levée.

get_user_client

Obtenez un UserProxy pour un utilisateur avec l’ID spécifié.

list_containers

Répertoriez les conteneurs dans la base de données.

list_users

Répertorier tous les utilisateurs du conteneur.

query_containers

Répertorier les propriétés des conteneurs dans la base de données active.

query_users

Retourne tous les utilisateurs correspondant à la requête donnée.

read

Lisez les propriétés de la base de données.

replace_container

Réinitialisez les propriétés du conteneur.

Les modifications de propriété sont conservées immédiatement. Toutes les propriétés non spécifiées sont réinitialisées à leurs valeurs par défaut.

replace_throughput

Remplacez le débit au niveau de la base de données.

Si aucune propriété de débit n’existe déjà pour la base de données, une exception est levée.

replace_user

Remplace l’utilisateur spécifié s’il existe dans le conteneur.

upsert_user

Insérez ou mettez à jour l’utilisateur spécifié.

Si l’utilisateur existe déjà dans le conteneur, il est remplacé. Si l’utilisateur n’existe pas déjà, il est inséré.

create_container

Créez un conteneur avec l’ID (nom) donné.

Si un conteneur avec l’ID donné existe déjà, une erreur CosmosResourceExistsError est levée.

async create_container(id: str, partition_key: PartitionKey, **kwargs: Any) -> ContainerProxy

Paramètres

id
str
Obligatoire

ID (nom) du conteneur à créer.

partition_key
PartitionKey
Obligatoire

Clé de partition à utiliser pour le conteneur.

indexing_policy
dict[str, str]

Stratégie d’indexation à appliquer au conteneur.

default_ttl
int

Durée de vie (TTL) par défaut pour les éléments du conteneur. S’ils ne sont pas spécifiés, les éléments n’expirent pas.

offer_throughput
Union[int, ThroughputProperties]

Débit provisionné pour cette offre.

unique_key_policy
dict[str, str]

Stratégie de clé unique à appliquer au conteneur.

conflict_resolution_policy
dict[str, str]

Stratégie de résolution des conflits à appliquer au conteneur.

session_token
str

Jeton à utiliser avec la cohérence de session.

initial_headers
dict[str, str]

En-têtes initiaux à envoyer dans le cadre de la demande.

etag
str

Spécifiez une valeur ETag ou le caractère générique *. Permet de case activée si la ressource a changé et d’agir en fonction de la condition spécifiée par le paramètre match_condition.

match_condition
MatchConditions

Condition de correspondance à utiliser sur l’etag.

response_hook
Callable[[Dict[str, str], Dict[str, Any]], None]

Appelable avec les métadonnées de réponse.

analytical_storage_ttl
int

Durée de vie (TTL) du magasin analytique pour les éléments du conteneur. La valeur Aucun désactive le stockage analytique et la valeur -1 active le stockage analytique sans durée de vie. Notez que le stockage analytique ne peut être activé que sur Synapse Link comptes activés.

Retours

Une instance ContainerProxy représentant le nouveau conteneur.

Type de retour

Exceptions

La création du conteneur a échoué.

Exemples

Créez un conteneur avec les paramètres par défaut :


           container_name = "products"
           try:
               container = await database.create_container(
                   id=container_name, partition_key=PartitionKey(path="/productName")
               )
           except exceptions.CosmosResourceExistsError:
               container = database.get_container_client(container_name)

Créer un conteneur avec des paramètres spécifiques ; dans ce cas, une clé de partition personnalisée :


           customer_container_name = "customers"
           try:
               customer_container = await database.create_container(
                   id=customer_container_name,
                   partition_key=PartitionKey(path="/city"),
                   default_ttl=200,
               )
           except exceptions.CosmosResourceExistsError:
               customer_container = database.get_container_client(customer_container_name)

create_container_if_not_exists

Créez un conteneur s’il n’existe pas déjà.

Si le conteneur existe déjà, les paramètres existants sont retournés. Remarque : il ne case activée ni ne met à jour les paramètres de conteneur existants ni le débit d’offre s’ils diffèrent de ce qui a été passé dans la méthode.

async create_container_if_not_exists(id: str, partition_key: PartitionKey, **kwargs: Any) -> ContainerProxy

Paramètres

id
str
Obligatoire

ID (nom) du conteneur à créer.

partition_key
PartitionKey
Obligatoire

Clé de partition à utiliser pour le conteneur.

indexing_policy
dict[str, str]

Stratégie d’indexation à appliquer au conteneur.

default_ttl
int

Durée de vie (TTL) par défaut pour les éléments du conteneur. S’ils ne sont pas spécifiés, les éléments n’expirent pas.

offer_throughput
Union[int, ThroughputProperties]

Débit provisionné pour cette offre.

unique_key_policy
dict[str, str]

Stratégie de clé unique à appliquer au conteneur.

conflict_resolution_policy
dict[str, str]

Stratégie de résolution des conflits à appliquer au conteneur.

session_token
str

Jeton à utiliser avec la cohérence de session.

initial_headers
dict[str, str]

En-têtes initiaux à envoyer dans le cadre de la demande.

etag
str

Spécifiez une valeur ETag ou le caractère générique *. Permet de case activée si la ressource a changé et d’agir en fonction de la condition spécifiée par le paramètre match_condition.

match_condition
MatchConditions

Condition de correspondance à utiliser sur l’etag.

response_hook
Callable[[Dict[str, str], Dict[str, Any]], None]

Appelable avec les métadonnées de réponse.

analytical_storage_ttl
int

Durée de vie (TTL) du magasin analytique pour les éléments du conteneur. La valeur Aucun désactive le stockage analytique et la valeur -1 active le stockage analytique sans durée de vie. Notez que le stockage analytique ne peut être activé que sur Synapse Link comptes activés.

Retours

Une instance ContainerProxy représentant le nouveau conteneur.

Type de retour

Exceptions

La création du conteneur a échoué.

create_user

Créez un utilisateur dans le conteneur.

Pour mettre à jour ou remplacer un utilisateur existant, utilisez la <xref:ContainerProxy.upsert_user> méthode .

async create_user(body: Dict[str, Any], **kwargs: Any) -> UserProxy

Paramètres

body
Dict[str, Any]
Obligatoire

Objet de type dict avec une clé d’ID et une valeur représentant l’utilisateur à créer. L’ID utilisateur doit être unique au sein de la base de données et ne doit pas comporter plus de 255 caractères.

response_hook
Callable[[Dict[str, str], Dict[str, Any]], None]

Appelable avec les métadonnées de réponse.

Retours

Un instance UserProxy représentant le nouvel utilisateur.

Type de retour

Exceptions

Si l’utilisateur donné n’a pas pu être créé.

Exemples

Créer un utilisateur de base de données :


           try:
               await database.create_user(dict(id="Walter Harp"))
               print("Created user Walter Harp.")
           except exceptions.CosmosResourceExistsError:
               print("A user with that ID already exists.")
           except exceptions.CosmosHttpResponseError as failure:
               print("Failed to create user. Status code:{}".format(failure.status_code))

delete_container

Supprimer un conteneur.

async delete_container(container: str | ContainerProxy | Dict[str, Any], **kwargs: Any) -> None

Paramètres

container
str ou Dict[str, Any] ou ContainerProxy
Obligatoire

ID (nom) du conteneur à supprimer. Vous pouvez transmettre l’ID du conteneur à supprimer, un ContainerProxy instance ou un dict représentant les propriétés du conteneur.

session_token
str

Jeton à utiliser avec la cohérence de session.

initial_headers
dict[str, str]

En-têtes initiaux à envoyer dans le cadre de la demande.

etag
str

Spécifiez une valeur ETag ou le caractère générique *. Permet de case activée si la ressource a changé et d’agir en fonction de la condition spécifiée par le paramètre match_condition.

match_condition
MatchConditions

Condition de correspondance à utiliser sur l’etag.

response_hook
Callable[[Dict[str, str], None], None]

Appelable avec les métadonnées de réponse.

Type de retour

Exceptions

Si le conteneur n’a pas pu être supprimé.

delete_user

Supprimez l’utilisateur spécifié du conteneur.

async delete_user(user: str | UserProxy | Dict[str, Any], **kwargs: Any) -> None

Paramètres

user
Union[str, Dict[str, Any], UserProxy]
Obligatoire

ID (nom), dict représentant les propriétés ou UserProxy instance de l’utilisateur à supprimer.

response_hook
Callable[[Dict[str, str], None], None]

Appelable avec les métadonnées de réponse.

Type de retour

Exceptions

L’utilisateur n’a pas été supprimé avec succès.

L’utilisateur n’existe pas dans le conteneur.

get_container_client

Obtenez un ContainerProxy pour un conteneur avec l’ID (nom) spécifié.

get_container_client(container: str | ContainerProxy | Dict[str, Any]) -> ContainerProxy

Paramètres

container
Union[str, Dict[str, Any], ContainerProxy]
Obligatoire

ID (nom), dict représentant les propriétés ou ContainerProxy instance du conteneur à obtenir.

Retours

Une instance ContainerProxy représentant le conteneur.

Type de retour

Exceptions

La création du conteneur a échoué.

Exemples

Obtenez un conteneur existant, en gérant une défaillance si elle est rencontrée :


           database = client.get_database_client(database_name)
           container = database.get_container_client(container_name)

get_throughput

Obtenez l’objet ThroughputProperties pour cette base de données.

Si aucune propriété de débit n’existe déjà pour la base de données, une exception est levée.

async get_throughput(**kwargs: Any) -> ThroughputProperties

Paramètres

response_hook
Callable[[Dict[str, str], List[Dict[str, Any]]], None]

Appelable avec les métadonnées de réponse.

Retours

ThroughputProperties pour la base de données.

Type de retour

Exceptions

Il n’existe aucune propriété de débit pour la base de données ou les propriétés de débit n’ont pas pu être récupérées.

get_user_client

Obtenez un UserProxy pour un utilisateur avec l’ID spécifié.

get_user_client(user: str | UserProxy | Dict[str, Any]) -> UserProxy

Paramètres

user
Union[str, Dict[str, Any], UserProxy]
Obligatoire

ID (nom), dict représentant les propriétés ou UserProxy instance de l’utilisateur à obtenir.

Retours

UserProxy instance représentant l’utilisateur récupéré.

Type de retour

Exceptions

La création du conteneur a échoué.

list_containers

Répertoriez les conteneurs dans la base de données.

list_containers(**kwargs) -> AsyncItemPaged[Dict[str, Any]]

Paramètres

max_item_count
int

Nombre maximal d’éléments à retourner dans l’opération d’énumération.

session_token
str

Jeton à utiliser avec la cohérence de session.

initial_headers
dict[str, str]

En-têtes initiaux à envoyer dans le cadre de la demande.

response_hook
Callable[[Dict[str, str], <xref:AsyncItemPaged>[Dict[str, Any]]], None]

Appelable avec les métadonnées de réponse.

Retours

AsyncItemPaged des propriétés de conteneur (dicts).

Type de retour

<xref:AsyncItemPaged>[Dict[str, Any]]

Exceptions

La création du conteneur a échoué.

Exemples

Répertorier tous les conteneurs de la base de données :


           database = client.get_database_client(database_name)
           async for container in database.list_containers():
               print("Container ID: {}".format(container['id']))

list_users

Répertorier tous les utilisateurs du conteneur.

list_users(**kwargs: Any) -> AsyncItemPaged[Dict[str, Any]]

Paramètres

max_item_count
int

Nombre maximal d’utilisateurs à retourner dans l’opération d’énumération.

response_hook
Callable[[Dict[str, str], <xref:AsyncItemPaged>[Dict[str, Any]]], None]

Appelable avec les métadonnées de réponse.

Retours

AsyncItemPaged des propriétés utilisateur (dicts).

Type de retour

<xref:AsyncItemPaged>[Dict[str, Any]]

Exceptions

La création du conteneur a échoué.

query_containers

Répertorier les propriétés des conteneurs dans la base de données active.

query_containers(**kwargs: Any) -> AsyncItemPaged[Dict[str, Any]]

Paramètres

query
Union[str, Dict[str, Any]]

Requête SQL Azure Cosmos DB à exécuter.

parameters
Optional[List[Dict[str, Any]]]

Tableau facultatif de paramètres de la requête. Chaque paramètre est un dict() avec les clés « name » et « value ».

max_item_count
int

Nombre maximal d’éléments à retourner dans l’opération d’énumération.

session_token
str

Jeton à utiliser avec la cohérence de session.

initial_headers
dict[str, str]

En-têtes initiaux à envoyer dans le cadre de la demande.

response_hook
Callable[[Dict[str, str], <xref:AsyncItemPaged>[Dict[str, Any]]], None]

Appelable avec les métadonnées de réponse.

Retours

AsyncItemPaged des propriétés de conteneur (dicts).

Type de retour

<xref:AsyncItemPaged>[Dict[str, Any]]

Exceptions

La création du conteneur a échoué.

query_users

Retourne tous les utilisateurs correspondant à la requête donnée.

query_users(query: str | Dict[str, Any], **kwargs: Any) -> AsyncItemPaged[Dict[str, Any]]

Paramètres

query
Union[str, Dict[str, Any]]
Obligatoire

Requête SQL Azure Cosmos DB à exécuter.

parameters
Optional[List[Dict[str, Any]]]

Tableau facultatif de paramètres de la requête. Chaque paramètre est un dict() avec les clés « name » et « value ». Ignoré si aucune requête n’est fournie.

max_item_count
int

Nombre maximal d’utilisateurs à retourner dans l’opération d’énumération.

response_hook
Callable[[Dict[str, str], <xref:AsyncItemPaged>[Dict[str, Any]]], None]

Appelable avec les métadonnées de réponse.

Retours

AsyncItemPaged des propriétés utilisateur (dicts).

Type de retour

<xref:AsyncItemPaged>[Dict[str, Any]]

Exceptions

La création du conteneur a échoué.

read

Lisez les propriétés de la base de données.

async read(**kwargs: Any) -> Dict[str, Any]

Paramètres

session_token
str

Jeton à utiliser avec la cohérence de session.

initial_headers
dict[str, str]

En-têtes initiaux à envoyer dans le cadre de la demande.

response_hook
Callable[[Dict[str, str], Dict[str, Any]], None]

Appelable avec les métadonnées de réponse.

Retours

Dict représentant les propriétés de la base de données

Type de retour

Exceptions

Si la base de données donnée n’a pas pu être récupérée.

replace_container

Réinitialisez les propriétés du conteneur.

Les modifications de propriété sont conservées immédiatement. Toutes les propriétés non spécifiées sont réinitialisées à leurs valeurs par défaut.

async replace_container(container: str | ContainerProxy | Dict[str, Any], partition_key: PartitionKey, **kwargs: Any) -> ContainerProxy

Paramètres

container
Union[str, Dict[str, Any], ContainerProxy]
Obligatoire

ID (nom), dict qui représente les propriétés ou ContainerProxy instance du conteneur à remplacer.

partition_key
PartitionKey
Obligatoire

Clé de partition à utiliser pour le conteneur.

indexing_policy
dict[str, str]

Stratégie d’indexation à appliquer au conteneur.

default_ttl
int

Durée de vie (TTL) par défaut pour les éléments du conteneur. S’ils ne sont pas spécifiés, les éléments n’expirent pas.

conflict_resolution_policy
dict[str, str]

Stratégie de résolution des conflits à appliquer au conteneur.

session_token
str

Jeton à utiliser avec la cohérence de session.

etag
str

Spécifiez une valeur ETag ou le caractère générique *. Permet de case activée si la ressource a changé et d’agir selon la condition spécifiée par le paramètre match_condition.

match_condition
MatchConditions

Condition de correspondance à utiliser sur l’etag.

initial_headers
dict[str, str]

En-têtes initiaux à envoyer dans le cadre de la demande.

response_hook
Callable[[Dict[str, str], Dict[str, Any]], None]

Appelable avec les métadonnées de réponse.

analytical_storage_ttl
int

Durée de vie (TTL) du magasin analytique pour les éléments du conteneur. La valeur None désactive le stockage analytique et la valeur -1 active le stockage analytique sans durée de vie. Notez que le stockage analytique ne peut être activé que sur Synapse Link comptes activés.

Retours

Un containerProxy instance représentant le conteneur une fois le remplacement terminé.

Type de retour

Exceptions

Déclenché si le conteneur n’a pas pu être remplacé. Cela inclut si le conteneur avec l’ID donné n’existe pas.

Exemples

Réinitialisez la propriété TTL sur un conteneur et affichez les propriétés mises à jour :


           # Set the TTL on the container to 3600 seconds (one hour)
           await database.replace_container(container, partition_key=PartitionKey(path='/productName'), default_ttl=3600)

           # Display the new TTL setting for the container
           container_props = await database.get_container_client(container_name).read()
           print("New container TTL: {}".format(json.dumps(container_props['defaultTtl'])))

replace_throughput

Remplacez le débit au niveau de la base de données.

Si aucune propriété de débit n’existe déjà pour la base de données, une exception est levée.

async replace_throughput(throughput: int | ThroughputProperties, **kwargs: Any) -> ThroughputProperties

Paramètres

throughput
Union[int, ThroughputProperties]
Obligatoire

Débit à définir.

response_hook
Callable[[Dict[str, str], Dict[str, Any]], None]

Appelable avec les métadonnées de réponse.

Retours

ThroughputProperties pour la base de données, mise à jour avec un nouveau débit.

Type de retour

Exceptions

Il n’existe aucune propriété de débit pour la base de données ou les propriétés de débit n’ont pas pu être mises à jour.

replace_user

Remplace l’utilisateur spécifié s’il existe dans le conteneur.

async replace_user(user: str | UserProxy | Dict[str, Any], body: Dict[str, Any], **kwargs: Any) -> UserProxy

Paramètres

user
Union[str, Dict[str, Any], UserProxy]
Obligatoire

ID (nom), dict représentant les propriétés ou UserProxy instance de l’utilisateur à remplacer.

body
Dict[str, Any]
Obligatoire

Objet de type dict qui représente l’utilisateur à remplacer.

response_hook
Callable[[Dict[str, str], Dict[str, Any]], None]

Appelable avec les métadonnées de réponse.

Retours

UserProxy instance représentant l’utilisateur après le remplacement.

Type de retour

Exceptions

Si le remplacement a échoué ou si l’utilisateur avec l’ID donné n’existe pas.

upsert_user

Insérez ou mettez à jour l’utilisateur spécifié.

Si l’utilisateur existe déjà dans le conteneur, il est remplacé. Si l’utilisateur n’existe pas déjà, il est inséré.

async upsert_user(body: Dict[str, Any], **kwargs: Any) -> UserProxy

Paramètres

body
Dict[str, Any]
Obligatoire

Objet de type dict qui représente l’utilisateur à mettre à jour ou à insérer.

response_hook
Callable[[Dict[str, str], Dict[str, Any]], None]

Appelable avec les métadonnées de réponse.

Retours

UserProxy instance représentant l’utilisateur upserted.

Type de retour

Exceptions

Si l’utilisateur donné n’a pas pu être upserted.