用 Python 管理 Snowflake 虚拟仓库¶
您可以使用 Python 管理 Snowflake 虚拟仓库,虚拟仓库是 Snowflake 中的计算资源集群。有关仓库的概述,请参阅 虚拟仓库。
Snowflake Python API 使用两种不同类型来表示仓库:
Warehouse
:显示仓库的属性,如名称、大小、类型、自动恢复和自动暂停设置。WarehouseResource
:显示可用于提取相应的Warehouse
对象、暂停和恢复仓库以及删除仓库的方法。
先决条件¶
在本主题中的示例中,假设您已添加了用来连接 Snowflake 和创建 Root
对象以使用 Snowflake Python API 的代码。
例如,以下代码使用配置文件中定义的连接参数来创建与 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 API 连接到 Snowflake。
创建仓库¶
要创建仓库,请先创建 Warehouse
对象,然后根据 API Root
对象创建 WarehouseCollection
对象。使用 WarehouseCollection.create
将新仓库添加到 Snowflake。
以下示例中的代码会创建一个 Warehouse
对象,该对象表示一个名为 my_wh
的仓库:
from snowflake.core import Root
from snowflake.core.warehouse import Warehouse
my_wh = Warehouse(
name="my_wh",
warehouse_size="SMALL",
auto_suspend=600,
)
warehouses = root.warehouses
warehouses.create(my_wh)
该代码会创建一个 WarehouseCollection
变量 warehouses
,并使用 WarehouseCollection.create
在 Snowflake 中创建了一个新仓库。
获取仓库详细信息¶
您可以通过调用 WarehouseResource.fetch
方法获取仓库信息,该方法会返回一个 Warehouse
对象。
以下示例中的代码会获取有关名为 my_wh
的仓库的信息:
from snowflake.core import Root
from snowflake.core.warehouse import Warehouse
my_wh = root.warehouses["my_wh"].fetch()
print(my_wh.to_dict())
列出仓库¶
您可以使用 WarehouseCollection.iter
方法列出仓库,该方法会返回 Warehouse
对象的 PagedIter
迭代器。
以下示例中的代码会列出名称中包含 my 文本的仓库,并打印每个仓库的名称:
from snowflake.core import Root
from snowflake.core.warehouse import Warehouse, WarehouseCollection
warehouses: WarehouseCollection = root.warehouses
wh_iter = warehouses.iter(like="my%") # returns a PagedIter[Warehouse]
for wh_obj in wh_iter:
print(wh_obj.name)
执行仓库操作¶
您可以通过 WarehouseResource
对象执行常见的仓库操作,如暂停和恢复仓库以及中止仓库上的所有查询。
以下示例中的代码会暂停和恢复 my_wh
仓库,中止仓库上所有正在运行或排队的查询,然后删除仓库:
from snowflake.core import Root
from snowflake.core.warehouse import Warehouse
my_wh_res = root.warehouses["my_wh"]
my_wh_res.suspend()
my_wh_res.resume()
my_wh_res.abort_all_queries()
my_wh_res.delete()