使用 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",
}
使用配置文件进行连接¶
您可以在 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"
在本例中,您定义了名为 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)
有关创建 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)
有关 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
的数据库中。代码使用 databases
、schemas
和 tasks
方法获取表示此任务的对象:
from snowflake.core import Root
from snowflake.core.task import Task
tasks = root.databases["mydb"].schemas["myschema"].tasks
mytask = tasks["mytask"]
mytask.resume()