はじめに:なぜ「Snowflakeコネクタ」を学ぶの?
こんにちは!今日は Snowflakeコネクタ (Python) を使って、自作のPythonアプリからSnowflakeに接続する方法を一緒に学んでいきましょう。
「SnowsightでSQLを書ける」「Snowflake CLIからも操作できる」とは知っていても、いざPythonアプリ(例えばDjangoのWebアプリ、データ分析スクリプト、Streamlitダッシュボードなど)からSnowflakeのデータを取り出したい!となったとき、どう書けばいいのか迷いますよね。そこで活躍するのが Snowflake Connector for 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)からドメインの前の部分を指定します。

クエリ結果を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() を実行するシンプルな接続から始めてみてくださいね!
参考リンク
関連記事
- Snowpark入門|PythonでSnowflakeのデータ処理を書こう – SQLではなくDataFrame APIで処理を書きたい人向け
- Snowpark Python入門|DataFrameの作り方と操作をやさしく解説 – DataFrame操作をもっと深く知りたい方へ
- Snowflake CLI入門|基本コマンドとプロジェクト管理をやさしく解説 – コマンドラインからSnowflakeを操作する方法
- Snowflake MFAとSSO設定入門|認証を強化する2つの仕組み – 接続時のセキュリティ強化に
- Snowflakeカスタムロール作成とGRANT/REVOKE入門 – アプリ専用ロールの作り方
- Snowflakeネットワークポリシー入門|IPでアクセスを制限する方法 – アプリからの接続元IPを制御する

