Snowflake Python APIs によるSnowflakeへの接続¶
Snowflake Python APIs でアクションを実行する前に、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",
}
構成ファイルを使用して接続する¶
接続定義を TOML 構成ファイル で指定できます。これにより、コード内でSnowflakeへの接続を明示的に定義する必要がなくなります。
TOML の構成ファイルの基本設定は、 Snowsight で生成できます。詳細については、 Snowflakeに接続するためのクライアント、ドライバー、ライブラリ、またはサードパーティアプリケーションの構成 をご参照ください。
接続設定は手動で構成することもできます。例えば、 ~/.snowflake/connections.toml
に構成ファイルを作成し、以下のような接続設定を追加します。
[myconnection]
account = "test-account"
user = "test_user"
password = "******"
role = "test_role"
warehouse = "test_warehouse"
database = "test_database"
schema = "test_schema"
この例では、アカウント test-account
、ユーザー test_user
、パスワードの認証情報、そしてデータベース情報を持つ myconnection
という名前付きのSnowflake接続を定義します。
注釈
アンダースコアは account
の設定ではサポートされていません。 アカウント識別子 にアンダースコアが含まれている場合は、ダッシュに置き換えてください。詳細については、 組織のアカウント名 をご参照ください。
接続定義は、 Snowflake Pythonコネクタ で利用可能なものと同じ構成オプションをサポートします。
Root
オブジェクトを接続し、作成する¶
指定した接続プロパティを使用して、Snowflakeへの接続を作成できます。この接続で Snowflake Python APIs Root
オブジェクトを作成し、API の使用を開始することができます。
次のオブジェクトの1つを使用して接続することができます。
Snowpark Session
を使用して接続する¶
Python用Snowpark API を使用している場合、その snowflake.snowpark.Session
オブジェクトを使用してSnowflakeへの接続を作成できます。
Snowpark Pythonライブラリは snowflake.core
の依存関係として自動的にはインストールされません。Snowpark Session
オブジェクトを使用してSnowflakeに接続するには、以下の手順に従います。
snowflake-snowpark-python
パッケージをインストールするには、以下のコマンドを実行します。pip install 'snowflake-snowpark-python>=1.5.0,<2.0.0'
Snowflakeへの接続を作成するには、次の例のようなコードを実行します。
from snowflake.core import Root from snowflake.snowpark import Session session = Session.builder.config("connection_name", "myconnection").create() root = Root(session)
この例では、コードは構成ファイルで指定された
myconnection
という名前の接続定義を使用してSession
オブジェクトを作成します。出来上がったSession
オブジェクトを使って、コードはRoot
オブジェクトを作成し、そこから API を使用します。
Session
の作成の詳細については、 Snowpark Pythonのセッションの作成 をご参照ください。
Pythonコネクタ Connection
を使用して接続する¶
Python用Snowflakeコネクタ を使用している場合は、その snowflake.connector.connect
関数を使用してSnowflakeへの接続を作成できます。関数は Connection
を返します。
Python Connectorライブラリを別途インストールする必要はありません。 snowflake
親パッケージをインストールすると、依存関係として snowflake-connector-python
パッケージが自動的にインストールされます。
次の例のコードは、構成ファイルで指定された myconnection
という接続定義を使用して Connection
オブジェクトを作成します。コードは、できあがった Connection
オブジェクトを使用して、 Root
オブジェクトを作成し、そこから API を使用します。
from snowflake.connector import connect
from snowflake.core import Root
connection = connect(connection_name="myconnection")
root = Root(connection)
Python用Snowflakeコネクタ API の詳細については、 Pythonコネクタ API をご参照ください。
Root
オブジェクトを使用する¶
Snowflakeへの接続から作成された Root
オブジェクトで、 Snowflake Python APIs のオブジェクトやメソッドにアクセスすることができます。 Root
オブジェクトは、API によってモデル化されたリソースツリーのルートです。 Root
オブジェクトを使用して、 API で表されるSnowflakeオブジェクトと対話します。
次の例のコードでは、 Root
オブジェクトを使用して Snowflakeオブジェクトにアクセスし、 mytask
という名前のタスクを再開します。タスクは mydb
というデータベース内の myschema
というスキーマにあります。このコードでは databases
、 schemas
、 tasks
メソッドを使用して、このタスクを表すオブジェクトを取得します。
tasks = root.databases["mydb"].schemas["myschema"].tasks
mytask = tasks["mytask"]
mytask.resume()