Gerenciamento de contas Snowflake e contas gerenciadas com Python¶
É possível usar Python para gerenciar contas e contas gerenciadas no Snowflake.
Pré-requisitos¶
Os exemplos neste tópico pressupõem que você tenha adicionado código para se conectar ao Snowflake e criar um objeto Root
a partir do qual usar o Snowflake Python APIs.
Por exemplo, o seguinte código usa parâmetros de conexão definidos em um arquivo de configuração para criar uma conexão com o Snowflake:
from snowflake.core import Root
from snowflake.snowpark import Session
session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Usando o objeto Session
resultante, o código cria um objeto Root
para usar os tipos e métodos de API. Para obter mais informações, consulte Conexão ao Snowflake com o Snowflake Python APIs.
Gerenciamento de contas¶
É possível gerenciar contas na sua organização Snowflake. Para uma visão geral das contas em Snowflake, consulte Gerenciamento de contas em sua organização.
O Snowflake Python APIs representa contas com dois tipos separados:
Account
: Expõe as propriedades de uma conta, como seu identificador de nome, o nome de login e a senha de seu usuário administrativo inicial e sua edição Snowflake.AccountResource
: Expõe métodos que você pode usar para buscar um objetoAccount
correspondente e para descartar e restaurar a conta.
Criação de uma conta¶
Para criar uma conta, primeiro crie um objeto Account
e depois crie um objeto AccountCollection
a partir do objeto Root
da API. Usando AccountCollection.create
, adicione a nova conta ao Snowflake.
O código no exemplo a seguir cria um objeto Account
que representa uma conta nomeada my_account1
com as propriedades de conta especificadas:
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)
Obtenção de detalhes da conta¶
É possível obter informações sobre uma conta chamando o método AccountResource.fetch
, que retorna um objeto Account
.
O código no exemplo a seguir obtém informações sobre uma conta nomeada my_account1
:
my_account = root.accounts["my_account1"].fetch()
print(my_account.to_dict())
Contas de listagem¶
É possível listar contas usando o método AccountCollection.iter
, que retorna um iterador PagedIter
de objetos Account
.
O código no exemplo a seguir lista contas cujos nomes começam com my
e imprime o nome de cada uma:
account_iter = root.accounts.iter(like="my%") # returns a PagedIter[Account]
for account_obj in account_iter:
print(account_obj.name)
O código no exemplo a seguir define o parâmetro opcional history=True
para listar um histórico de contas, incluindo contas descartadas que ainda não foram excluídas.
account_iter = root.accounts.iter(history=True) # returns a PagedIter[Account]
for account_obj in account_iter:
print(account_obj.name)
Execução de operações de conta¶
É possível executar operações comuns de conta – como descartar e restaurar uma conta – com um objeto AccountResource
.
Para demonstrar as operações que podem ser feitas com um recurso de conta, o código no exemplo a seguir faz o seguinte:
Busca o objeto de recurso da conta
my_account1
.Exclui a conta com o período de cortesia especificado, que é o número de dias durante os quais a conta pode ser restaurada.
Restaura a conta.
my_account_res = root.accounts["my_account1"]
my_account_res.drop(grace_period_in_days=4)
my_account_res.undrop()
Administração de contas gerenciadas¶
É possível administrar contas gerenciadas Snowflake, que atualmente são usadas por provedores de dados para criar contas de leitores para seus consumidores. Para obter mais informações, consulte Gerenciamento de contas de leitor.
O Snowflake Python APIs representa contas gerenciadas com dois tipos separados:
ManagedAccount
: Expõe as propriedades de uma conta gerenciada, como seu identificador de nome, o nome de login e a senha do usuário administrativo inicial, bem como seu tipo de conta.ManagedAccountResource
: Expõe métodos que podem ser usados para buscar um objetoManagedAccount
correspondente e descartar a conta gerenciada.
Criação de uma conta gerenciada¶
Para criar uma conta gerenciada, primeiro crie um objeto ManagedAccount
e, em seguida, crie um objeto ManagedAccountCollection
a partir do objeto Root
da API. Usando ManagedAccountCollection.create
, adicione a nova conta gerenciada ao Snowflake.
O código no exemplo a seguir cria um objeto ManagedAccount
que representa uma conta gerenciada nomeada reader_acct1
com as propriedades de conta especificadas:
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)
Como obter detalhes da conta gerenciada¶
É possível obter informações sobre uma conta gerenciada chamando o método ManagedAccountResource.fetch
, que retorna um objeto ManagedAccount
.
O código no exemplo a seguir obtém informações sobre uma conta gerenciada nomeada reader_acct1
:
my_managed_account = root.managed_accounts["reader_acct1"].fetch()
print(my_managed_account.to_dict())
Listagem de contas gerenciadas¶
É possível listar contas gerenciadas usando o método ManagedAccountCollection.iter
, que retorna um iterador PagedIter
de objetos ManagedAccount
.
O código no exemplo a seguir lista contas gerenciadas cujos nomes começam com reader
e imprime o nome de cada uma:
account_iter = root.managed_accounts.iter(like="reader%") # returns a PagedIter[ManagedAccount]
for account_obj in account_iter:
print(account_obj.name)
Cancelamento de uma conta gerenciada¶
É possível descartar uma conta gerenciada com um objeto ManagedAccountResource
.
O código no exemplo a seguir busca o objeto de recurso da conta gerenciada reader_acct1
e, em seguida, descarta a conta.
my_managed_account_res = root.managed_accounts["reader_acct1"]
my_managed_account_res.drop()