使用 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)
代码可通过生成的 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)
列出账户¶
您可以使用 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)
以下示例中的代码会设置可选参数 history=True
以列出账户历史记录,其中包括已丢弃但尚未删除的账户。
account_iter = root.accounts.iter(history=True) # returns a PagedIter[Account]
for account_obj in account_iter:
print(account_obj.name)
执行账户操作¶
您可以使用 AccountResource
对象执行常见的账户操作,例如删除和取消删除账户。
为了演示可以对账户资源执行的操作,以下示例中的代码会执行以下操作:
获取
my_account1
账户资源对象。删除账户并指定宽限期;宽限期是账户可以恢复的天数(“取消删除”)。
取消删除账户。
my_account_res = root.accounts["my_account1"]
my_account_res.drop(grace_period_in_days=4)
my_account_res.undrop()
管理托管账户¶
您可以管理 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)
列出托管账户¶
您可以使用 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)
删除托管账户¶
您可以使用 ManagedAccountResource
对象删除托管账户。
以下示例中的代码会获取 reader_acct1
托管账户资源对象,然后删除账户。
my_managed_account_res = root.managed_accounts["reader_acct1"]
my_managed_account_res.drop()