Snowflake Python API を使用してSnowflakeに接続する

Snowflake Python API でアクションを実行する前に、Snowflakeへの接続を定義する必要があります。この接続で、 Root オブジェクトを作成して、 API でモデル化されたリソースにアクセスすることができます。

接続プロパティを指定する

以下のメカニズムの1つを使用して、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

この例では、アカウント test_account、ユーザー test_user、パスワードの認証情報、そしてデータベース情報を持つ myconnection というSnowflake接続を定義します。

接続定義は、 Snowflake Pythonコネクタ で利用可能なものと同じ構成オプションをサポートします。

Root オブジェクトを接続し、作成する

指定した接続プロパティを使用して、Snowflakeへの接続を作成できます。この接続で、Snowflake Python API Root オブジェクトを作成し、API の使用を開始することができます。

次のオブジェクトの1つを使用して接続することができます。

Snowpark Session を使用して接続する

Python用Snowpark API を使用している場合、その 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コネクタ Connection を使用して接続する

Python用Snowflakeコネクタ を使用している場合は、その 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

Python用Snowflakeコネクタ API の詳細については、 Pythonコネクタ API をご参照ください。

Root オブジェクトを使用する

Snowflakeへの接続から作成された Root オブジェクト 、Snowflake Python API のオブジェクトやメソッドにアクセスすることができます。 Root オブジェクトは、Snowflake Python API によってモデル化されたリソースツリーのルートです。 Root オブジェクトを使用して、 API で表されるSnowflakeオブジェクトと対話します。

次の例のコードでは、 Root オブジェクトを使用して Snowflakeオブジェクトにアクセスし、 mytask という名前のタスクを再開します。タスクは mydb というデータベース内の myschema というスキーマにあります。このコードでは 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