使用 Python 管理 Snowflake 账户和托管账户

您可以使用 Python 来管理 Snowflake 中的账户和托管账户。

先决条件

在本主题中的示例中,假设您已添加了用来连接 Snowflake 和创建 Root 对象以使用 Snowflake Python APIs 的代码。

例如,以下代码使用配置文件中定义的连接参数来创建与 Snowflake 的连接:

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

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

代码可通过生成的 Session 对象创建 Root 对象,从而使用 API 的类型和方法。有关更多信息,请参阅 使用 Snowflake Python APIs 连接到 Snowflake

管理账户

您可以管理 Snowflake 组织中的账户。有关 Snowflake 中的账户概述,请参阅 管理组织中的账户

Snowflake Python APIs 使用两种不同类型来表示账户:

  • Account:显示账户的属性,例如其名称标识符、其初始管理用户的登录名和密码及其 Snowflake 版本。

  • AccountResource:显示可用于删除和恢复相应 Account 对象的方法。

创建账户

要创建账户,请先创建一个 Account 对象,然后根据 API Root 对象创建 AccountCollection 对象。使用 AccountCollection.create 将新账户添加到 Snowflake。

以下示例中的代码会创建一个 Account 对象,其表示名为 my_account1 且具有所指定账户属性的账户:

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

列出账户

您可以使用 AccountCollection.iter 方法列出账户,该方法会返回 Account 对象的 PagedIter 迭代器。

以下示例中的代码会列出名称以 my 开头的账户,并打印每个账户的名称:

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

以下示例中的代码会设置可选参数 history=True 以列出账户历史记录,其中包括已丢弃但尚未删除的账户。

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

执行账户操作

您可以使用 AccountResource 对象执行常见的账户操作,例如删除和取消删除账户。

为了演示可以对账户资源执行的操作,以下示例中的代码会执行以下操作:

  1. 获取 my_account1 账户资源对象。

  2. 删除账户并指定宽限期;宽限期是账户可以恢复的天数(“取消删除”)。

  3. 取消删除账户。

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

管理托管账户

您可以管理 Snowflake 托管账户;托管账户是提供商当前用来为其使用者创建阅读者账户的账户。有关更多信息,请参阅 管理阅读者账户

Snowflake Python APIs 使用两种不同类型来表示托管账户:

  • ManagedAccount:显示托管账户的属性,例如其名称标识符、其初始管理用户的登录名和密码及其账户类型。

  • ManagedAccountResource:显示可用于删除相应 ManagedAccount 对象的方法。

创建托管账户

要创建托管账户,请先创建 ManagedAccount 对象,然后根据 API Root 对象创建 ManagedAccountCollection 对象。使用 ManagedAccountCollection.create 将新托管账户添加到 Snowflake。

以下示例中的代码会创建一个 ManagedAccount 对象,其表示名为 reader_acct1 且具有所指定账户属性的托管账户:

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

列出托管账户

您可以使用 ManagedAccountCollection.iter 方法列出托管账户,该方法会返回 ManagedAccount 对象的 PagedIter 迭代器。

以下示例中的代码会列出名称以 reader 开头的托管账户,并打印每个托管账户的名称:

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

删除托管账户

您可以使用 ManagedAccountResource 对象删除托管账户。

以下示例中的代码会获取 reader_acct1 托管账户资源对象,然后删除账户。

my_managed_account_res = root.managed_accounts["reader_acct1"]
my_managed_account_res.drop()
Copy
语言: 中文