使用 Snowflake Python API 连接到 Snowflake

在使用 Snowflake Python API 执行操作前,您必须定义与 Snowflake 的连接。通过连接,您可以创建一个 Root 对象,用于访问由 API 建模的资源。

指定连接属性

您可以使用以下机制之一定义与 Snowflake 的连接:

使用 Python 字典进行连接

您可以使用 Python 字典指定连接到 Snowflake 所需的值。连接时,将此字典作为实参传递给您用于连接的函数或方法:

import os

CONNECTION_PARAMETERS = {
    "account": os.environ["snowflake_account_demo"],
    "user": os.environ["snowflake_user_demo"],
    "password": os.environ["snowflake_password_demo"],
    "role": "test_role",
    "database": "test_database",
    "warehouse": "test_warehouse",
    "schema": "test_schema",
}
Copy

使用配置文件进行连接

您可以在 TOML 配置文件 中指定连接定义。这样就无需在代码中显式定义与 Snowflake 的连接。

例如,创建一个位于 ~/.snowflake/connections.toml 的配置文件,然后添加类似如下内容的连接参数:

[myconnection]
account = "test_account"
user = "test_user"
password = "******"
role = "test_role"
warehouse = "test_warehouse"
database = "test_database"
schema = "test_schema"
Copy

在本例中,您定义了名为 myconnection 的 Snowflake 连接,该连接使用账户 test_account、用户 test_user、密码凭据和数据库信息。

连接定义支持的配置选项与 Snowflake Python Connector 中提供的相同。

连接并创建 Root 对象

通过您指定的连接属性,您可以创建到 Snowflake 的连接。通过连接,您可以创建 Snowflake Python API Root 对象,并通过该对象开始使用 API。

您可以使用以下对象之一进行连接:

与 Snowpark Session 连接

如果您正在使用 Snowpark API for Python,则可以使用其 snowflake.snowpark.Session 对象创建与 Snowflake 的连接。

以下示例中的代码会使用配置文件中定义的连接参数来创建与 Snowflake 的连接。代码可通过生成的 Session 对象创建 Root 对象,从而使用 API:

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

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

有关创建 Session 的更多信息,请参阅 为 Snowpark Python 创建会话

使用 Python Connector:code:Connection 进行连接

如果您使用的是 Snowflake Connector for Python,则可以使用其 snowflake.connector.connect 函数创建与 Snowflake 的连接。该函数会返回 Connection 对象。

以下示例中的代码会使用配置文件中定义的连接参数来创建与 Snowflake 的连接。代码可通过生成的 Connection 对象创建 Root 对象,从而使用 API:

from snowflake.connector import connect
from snowflake.core import Root

connection = connect(connection_name="myconnection")
root = Root(connection)
Copy

有关 Snowflake Connector for Python API 的更多信息,请参阅 Python Connector API

使用 Root 对象

通过 与 Snowflake 的连接创建的 Root 对象,您可以访问 Snowflake Python API 的对象和方法。Root 对象是由 Snowflake Python API 建模的资源树的根。您可以使用 Root 对象与 API 表示的 Snowflake 对象进行交互。

以下示例中的代码使用 Root 对象访问 Snowflake 对象,以便恢复名为 mytask 的任务。该任务位于名为 myschema 的架构中,而该架构位于名为 mydb 的数据库中。代码使用 databasesschemastasks 方法获取表示此任务的对象:

from snowflake.core import Root
from snowflake.core.task import Task

tasks = root.databases["mydb"].schemas["myschema"].tasks
mytask = tasks["mytask"]
mytask.resume()
Copy
语言: 中文