Gestion des comptes Snowflake et des comptes gérés avec Python

Vous pouvez utiliser Python pour gérer les comptes et les comptes gérés dans Snowflake.

Conditions préalables

Les exemples de cette rubrique supposent que vous ayez ajouté le code nécessaire pour vous connecter à Snowflake et créer un objet Root à partir duquel utiliser les Snowflake Python APIs.

Par exemple, le code suivant utilise les paramètres de connexion définis dans un fichier de configuration pour créer une connexion à Snowflake.

from snowflake.core import Root
from snowflake.snowpark import Session

session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Copy

En utilisant l’objet Session obtenu, le code crée un objet Root pour utiliser les types et les méthodes de l’API. Pour plus d’informations, voir Connexion à Snowflake avec Snowflake Python APIs.

Gestion des comptes

Vous pouvez gérer les comptes de votre organisation Snowflake. Pour un aperçu des comptes dans Snowflake, voir Gestion des comptes dans votre organisation.

Les Snowflake Python APIs représentent des comptes avec deux types distincts :

  • Account : expose les propriétés d’un compte telles que son identificateur de nom, le nom de connexion et le mot de passe de son utilisateur administratif initial et son édition Snowflake.

  • AccountResource : expose des méthodes que vous pouvez utiliser pour récupérer un objet Account correspondant et pour annuler la suppression de la base de données.

Création d’un compte

Pour créer un compte, créez d’abord un objet Account, puis créez un objet AccountCollection de l’objet d’API Root. En utilisant AccountCollection.create, ajoutez le nouveau compte à Snowflake.

Le code de l’exemple suivant crée un objet Account qui représente un compte nommé my_account1 avec les propriétés de compte spécifiées :

from snowflake.core.account import Account

my_account = Account(
  name="my_account1",
  admin_name="admin",
  admin_password="TestPassword1",
  first_name="Jane",
  last_name="Smith",
  email="myemail@myorg.org",
  edition="ENTERPRISE",
  region="aws_us_west_2",
  comment="creating my account",
)

root.accounts.create(my_account)
Copy

Obtention de détails sur le compte

Vous pouvez obtenir des informations sur un compte en appelant la méthode AccountResource.fetch, qui renvoie un objet Account.

Le code de l’exemple suivant permet d’obtenir des informations sur un compte appelé my_account1 :

my_account = root.accounts["my_account1"].fetch()
print(my_account.to_dict())
Copy

Affichage des comptes

Vous pouvez répertorier des comptes à l’aide de la méthode AccountCollection.iter qui renvoie un itérateur PagedIter d’objets Account.

Le code de l’exemple suivant répertorie les comptes dont le nom commence par my et imprime le nom de chacun :

account_iter = root.accounts.iter(like="my%")  # returns a PagedIter[Account]
for account_obj in account_iter:
  print(account_obj.name)
Copy

Le code de l’exemple suivant définit le paramètre facultatif history=True pour répertorier un historique des comptes, y compris les comptes supprimés qui n’ont pas encore été supprimés définitivement.

account_iter = root.accounts.iter(history=True)  # returns a PagedIter[Account]
for account_obj in account_iter:
  print(account_obj.name)
Copy

Effectuer des opérations de compte

Vous pouvez effectuer des opérations de compte courantes, telles que la suppression et l’annulation de la suppression d’un compte, avec un objet AccountResource.

Pour illustrer les opérations que vous pouvez effectuer avec une ressource de compte, le code de l’exemple suivant effectue les opérations suivantes :

  1. Extrait l’objet de ressource de compte my_account1.

  2. Supprime le compte avec la période de grâce spécifiée, qui correspond au nombre de jours pendant lesquels le compte peut être restauré (« dont la suppression est annulée »).

  3. Annule la suppression du compte.

my_account_res = root.accounts["my_account1"]
my_account_res.drop(grace_period_in_days=4)
my_account_res.undrop()
Copy

Gestion des comptes gérés

Vous pouvez gérer des comptes gérés par Snowflake, qui sont actuellement utilisés par les fournisseurs de données pour créer des comptes de lecteur pour leurs consommateurs. Pour plus d’informations, voir Gérer des comptes de lecteur.

Les Snowflake Python APIs représentent les comptes gérés avec deux types distincts :

  • ManagedAccount : expose les propriétés d’un compte géré telles que son identificateur de nom, le nom de connexion et le mot de passe de son utilisateur administratif initial et son type de compte.

  • ManagedAccountResource : expose des méthodes que vous pouvez utiliser pour extraire un objet ManagedAccount correspondant et pour supprimer le compte géré.

Création d’un compte géré

Pour créer un compte géré, il faut d’abord créer un objet ManagedAccount, puis créer un objet ManagedAccountCollection à partir de l’objet de l’objet d’API Root. En utilisant ManagedAccountCollection.create, ajoutez le nouveau compte géré à Snowflake.

Le code de l’exemple suivant crée un objet ManagedAccount qui représente un compte géré nommé reader_acct1 avec les propriétés de compte spécifiées :

from snowflake.core.managed_account import ManagedAccount

my_managed_account = ManagedAccount(
  name="reader_acct1",
  admin_name="admin",
  admin_password="TestPassword1",
  type="READER",
  comment="creating my managed account",
)

root.managed_accounts.create(my_managed_account)
Copy

Obtenir les détails du compte géré

Vous pouvez obtenir des informations sur un compte géré en appelant la méthode ManagedAccountResource.fetch, qui renvoie un objet ManagedAccount.

Le code de l’exemple suivant permet d’obtenir des informations sur un compte géré appelé reader_acct1 :

my_managed_account = root.managed_accounts["reader_acct1"].fetch()
print(my_managed_account.to_dict())
Copy

Affichage des comptes gérés

Vous pouvez répertorier des comptes gérés à l’aide de la méthode ManagedAccountCollection.iter qui renvoie un itérateur PagedIter d’objets ManagedAccount.

Le code de l’exemple suivant répertorie les comptes gérés dont le nom commence par reader et imprime le nom de chacun :

account_iter = root.managed_accounts.iter(like="reader%")  # returns a PagedIter[ManagedAccount]
for account_obj in account_iter:
  print(account_obj.name)
Copy

Suppression d’un compte géré

Vous pouvez supprimer un compte géré avec un objet ManagedAccountResource.

Le code dans l’exemple suivant extrait le l’objet de ressource de compte géré reader_acct1, puis supprime le compte.

my_managed_account_res = root.managed_accounts["reader_acct1"]
my_managed_account_res.drop()
Copy