Snowflake Python Connectorのインストール方法

2020.03.27

こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。

SnowflakeのPython Connectorを改めてインストールし直したので、手順をまとめておきたいと思います。

前提

OSはUbuntuの18.04を利用しています。(WindowsのWSLです)

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.3 LTS
Release:        18.04
Codename:       bionic

Pythonのバージョンは3.8.2、pipのバージョンは20.0.2です。

$ python --version
Python 3.8.2

$ pip --version
pip 20.0.2 from /home/ubuntu/.anyenv/envs/pyenv/versions/3.8.2/lib/python3.8/site-packages/pip (python 3.8)

pyenvpipenvも利用しており、作業ディレクトリも、以下で設定を済ませてあります。

$ pyenv local 3.8.2
$ pipenv --python 3.8

Python Connectorのインストール

では、早速下記のドキュメントに従って、インストールを進めます。

Installing the Python Connector — Snowflake Documentation

インストール要件

Pythonのバージョンは3.5以上、pipのバージョンは19.0以上が必要となります。

また、Linux環境ではopenssllibffiが必要となるので、下記コマンドでインストールしておきます。

$ sudo apt install -y libssl-dev libffi-dev

なお、yumの場合はこちらです。

$ sudo yum install -y openssl-devel libffi-devel

Python Connectorのインストール

以下を実行するだけでインストール完了です。

$ pipenv install snowflake-connector-python

インストールの検証

インストールが終わったら検証を行ってみます。

ドキュメントに記載されているサンプルコードを元に、.envによる環境変数を利用するように修正して検証コードを作成しました。

このファイルをvalidate.pyとして保存します。

validate.py

import os
import snowflake.connector

# Gets the version
ctx = snowflake.connector.connect(
    user=os.environ['SNOWFLAKE_USER'],
    password=os.environ['SNOWFLAKE_PASSWORD'],
    account=os.environ['SNOWFLAKE_ACCOUNT']
    )
cs = ctx.cursor()
try:
    cs.execute("SELECT current_version()")
    one_row = cs.fetchone()
    print(one_row[0])
finally:
    cs.close()
ctx.close()

併せて下記のように環境変数を.envファイルに記述しておきます。

.env

SNOWFLAKE_USER=sam_strand
SNOWFLAKE_PASSWORD=rVKQ7kU5eiR5zhBieNKyTU4xnzavFsSJ
SNOWFLAKE_ACCOUNT=bridges.ap-northeast-1.aws

ここまで準備ができたら、pipenvのshellに入って実行してみます。shellに入る際に.envが読み込まれて、指定の環境変数で接続検証が行えます。接続ができたらバージョン番号が表示されるはずです。

$ pipenv shell
$ python validate.py 
4.10.1

無事に、接続できました!これで、python-connectorが正常に動いていることも確認できましたね。

まとめ

以上、Python Connectorのインストールでした。pipでインストールするだけなので簡単ですが、インストール要件だけ注意が必要そうですね。

どなたかのお役に立てば幸いです。それでは!