SnowflakeにPythonコネクタで接続してみる

SnowflakeにPythonコネクタで接続してみる

Clock Icon2024.12.19

SnowflakeにPythonコネクタで接続してみる

今データ業界で最もホットなプロダクトの一つといえば Snowflake が挙げられるでしょう。
ということで今回はSnowflakeにPythonを使用して接続してみます。

はじめに

Snowflakeにはさまざまなドライバが用意されており、ニーズに合わせた接続方法を選べるようになっています。
今回はその中でもデータ処理の面で使われることが多いであろうPython用のコネクタを使用して、簡単なSQLを実行する方法を説明します。

やってみる

Pythonコネクタのインストール

Python用のコネクタが必要なのでpipでインストールします。

pip install snowflake-connector-python
>>> import snowflake.connector
>>> print(snowflake.connector.__version__)
3.12.4

PythonからSnowflakeに接続する

PythonからSnowflakeに接続するには snowflake.connector.connect() メソッドを使用します。

import snowflake.connector

con = snowflake.connector.connect(
    account='XXXX',
    user='XXXX',
    password='XXXX',
)

必須のパラメータは

  • account
  • user
  • password

です。
account の設定はいくつか方法があります。
詳しくは ドキュメント を見ていただくのが良いと思いますが、公式で推奨されているのは <組織名>-<アカウント名> の形式です。
例えば SnowOrg という組織の SnowAccount というアカウントの場合、パラメータの指定は account="SnowOrg-SnowAccount" となります。

SQLを実行する

PythonからはInsert文を流してみて、その結果をコンソール画面から確認してみたいと思います。
まずはコンソールを開いて、 KITAGAWA_TEST_DB.PUBLIC.TEST_TABLE というテーブルを次のSQLで作成します。

CREATE OR REPLACE TABLE KITAGAWA_TEST_DB.PUBLIC.TEST_TABLE (
    id smallint,
    name string,
    age int
);

alt text

次はこのテーブルへのInsert文を、Pythonから投げてみます。
なおここでは追加のパラメータとして warehouse, database, schema を指定しています。

import os

import snowflake.connector
from dotenv import load_dotenv

load_dotenv()

USER = os.getenv("USER")
PASSWORD = os.getenv("PASSWORD")
ACCOUNT = os.getenv("ACCOUNT")


def main():
    con = snowflake.connector.connect(
        user=USER,
        password=PASSWORD,
        account=ACCOUNT,
        warehouse="X_SMALL_WH",
        database="KITAGAWA_TEST_DB",
        schema="PUBLIC",
    )
    sql_statement = """
        INSERT INTO test_table VALUES
            (1, 'Snowman1', 1),
            (2, 'Snowman2', 4),
            (3, 'Snowman3', 9)
        ;
    """
    con.cursor().execute(sql_statement)


if __name__ == "__main__":
    main()

ではこのスクリプトを実行してみます。
Insert文が正常に実行されているかどうか、コンソール画面から確かめてみましょう。

alt text

成功しましたね!
想定通りデータの挿入が行われていることが確認できます。

最後に

今回はPython用コネクタを用いて、Snowflakeで簡単なSQLを実行する方法を解説してみました。
SnowflakeはPython Database API v2仕様(PEP-249)に準拠しており、よく使われているDBと同じような感覚でPythonから接続できるように設計されています。
次はもっと踏み込んだところについての解説も行っていきたいと考えていますので、どうぞお付き合いください。

この記事が誰かのお役に立てると幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.