Snowflakeコネクタ Python入門|アプリから接続する方法をやさしく解説

Snowflakeコネクタ Python入門|アプリから接続する方法をやさしく解説 Snowflake

はじめに:なぜ「Snowflakeコネクタ」を学ぶの?

こんにちは!今日は Snowflakeコネクタ (Python) を使って、自作のPythonアプリからSnowflakeに接続する方法を一緒に学んでいきましょう。

「SnowsightでSQLを書ける」「Snowflake CLIからも操作できる」とは知っていても、いざPythonアプリ(例えばDjangoのWebアプリ、データ分析スクリプト、Streamlitダッシュボードなど)からSnowflakeのデータを取り出したい!となったとき、どう書けばいいのか迷いますよね。そこで活躍するのが Snowflake Connector for Python という公式ライブラリです。

Snowflakeコネクタ Python入門|アプリから接続する方法をやさしく解説

Snowflakeコネクタって何?

Snowflake Connector for Pythonは、Snowflakeが公式に提供している Python用ドライバ です。Pythonの標準仕様である PEP 249 (DB-API 2.0) に準拠していて、SQLiteやPostgreSQLのドライバを使ったことがある方なら「あ、いつもの書き方だ!」とすぐ馴染めるはずです。

主な役割は次の通り:

  • SnowflakeにHTTPSで安全に接続する
  • SQLを送信して結果を受け取る
  • 結果を pandas DataFrame に変換することもできる

ちなみに、DataFrame中心でデータ加工をしたいなら Snowpark Python という選択肢もあります。コネクタは「SQLをそのまま投げたい」、Snowparkは「Pythonコードでデータ処理を組み立てたい」という違いだとイメージしてください。

インストールと基本の接続コード

1. インストール

まずはpipでインストールします。pandasと連携したいなら [pandas] オプションを付けるのがおすすめ。

pip install "snowflake-connector-python[pandas]"

2. 接続するシンプルな例

下のコードで、ユーザー名・パスワード・アカウント識別子を指定して接続できます。

import snowflake.connector

conn = snowflake.connector.connect(
    user="TARO",
    password="********",
    account="xy12345.ap-northeast-1.aws",
    warehouse="COMPUTE_WH",
    database="MY_DB",
    schema="PUBLIC",
    role="SYSADMIN",
)

cur = conn.cursor()
try:
    cur.execute("SELECT CURRENT_VERSION()")
    print(cur.fetchone())
finally:
    cur.close()
    conn.close()

ポイントは account パラメータ。SnowsightのURL(例: xy12345.ap-northeast-1.aws.snowflakecomputing.com)からドメインの前の部分を指定します。

2. 接続するシンプルな例の解説図

クエリ結果をDataFrameで受け取る

分析やレポート用途では、結果をpandasに渡したくなりますよね。fetch_pandas_all() を使えば一発です。

cur.execute("SELECT * FROM SALES LIMIT 1000")
df = cur.fetch_pandas_all()
print(df.head())

逆にローカルのDataFrameをSnowflakeに書き込みたい場合は write_pandas() が便利。ETLや一時データ投入で重宝します。

セキュリティと運用の注意点

  • パスワードをコードに直書きしない:環境変数や Secrets Manager を使いましょう。
  • キーペア認証やSSO:本番ではより安全な認証方式が推奨されます。MFAやSSOの設定と組み合わせると安心です。
  • ロールを最小権限に:アプリ専用ロールを作って必要な権限だけ付与するのが鉄則。カスタムロールの作り方もあわせてどうぞ。
  • 必ずクローズ:接続を開きっぱなしにするとウェアハウスが意図せず動き続けてしまうことも。with 文や try/finally で確実に閉じましょう。

よくあるユースケース

こんなときにSnowflakeコネクタが大活躍します。

  • WebアプリのバックエンドからSnowflakeのマスタを参照する
  • 定期バッチでCSVを取り込み、加工してSnowflakeへロードする
  • StreamlitやJupyterで分析ダッシュボードを作る

まとめ

Snowflake Connector for Pythonは、PythonアプリとSnowflakeを橋渡しする最もスタンダードな方法です。connect → cursor → execute → fetch → close という基本パターンさえ押さえれば、あとは普段のSQLをそのまま投げ込めるのが嬉しいポイント。まずは SELECT CURRENT_VERSION() を実行するシンプルな接続から始めてみてくださいね!

参考リンク

関連記事