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

このトピックでは、Python用Snowflakeコネクタをインストールする手順について説明します。コネクタは現在、Linux、 macOS、およびWindows環境にインストールできます。

開発者ノートは、ソースコードとともに GitHub でホストされています。

このトピックの内容:

前提条件

Snowflakeクライアントでサポートされているオペレーティングシステムのリストについては、 オペレーティングシステムのサポート をご参照ください。

Python用Snowflakeコネクタをインストールするには、次のソフトウェアパッケージが必要です。

Python

Linuxおよび macOS では、Python用Snowflakeコネクタに、Python 3.5、3.6、3.7、または3.8が必要。

MS Windowsでは、Python用Snowflakeコネクタに、Python 3.5、3.6、または3.7が必要。

Pythonのバージョンを確認するには、

python --version

必要なバージョンのPythonのインストールの詳細については、以下をご参照ください。

Pythonパッケージインストーラーと設定ツール

Python用Snowflakeコネクタは、標準のPythonパッケージインストーラーおよびマネージャーである pip によってインストールされます。

pipバージョン19.0またはそれ以降を使用してください。次のコマンドを実行して、必要なバージョンがインストールされていることを確認します。

python -m pip install --upgrade pip

注釈

  • macOSで、 virtualenv または pyvenv を使用してPythonとコネクタをインストールします。

  • Python 2.7.xとPython 3.5.xの両方がインストールされている場合、 pip3 を使用してPython 3.5.xでコネクタをインストールします。

  • pip (または pip3)がシステムディレクトリまたは共有ディレクトリにインストールされている場合、 sudo を使用して上記のコマンドを実行します。これにより、ディレクトリへのファイルの書き込み/コピーに必要な権限が確保されます。

Pythonパッケージ

Pythonコネクタは、多くのPythonパッケージを使用します。Snowflakeは、Pythonコネクタの各リリースのテストで使用するパッケージのバージョン番号を文書化します。ドキュメントは https://github.com/snowflakedb/snowflake-connector-python/tree/master/tested_requirements にあります。

リポジトリには、PythonコネクタがサポートするPythonの各バージョン(例:3.7)ごとに1つのファイルが含まれます。各ファイルは、次のような行で構成されます。

asn1crypto==1.3.0

== の左側の要素はパッケージの名前で、 == の右側の要素はパッケージのバージョン番号です。

テスト中にSnowflakeが使用したライブラリと同じバージョンを使用することをお勧めします。固定された依存関係をオーバーライドしないか、固定された依存関係をオーバーライドする可能性のあるアプリケーションを使用することをお勧めします。

pyOpenSSL (macOS のみ)

macOS (Yosemite以上のバージョン)にはPython 2.7.xが含まれます。Python 2.7.xを使用中で、 pyOpenSSL のバージョンが古い場合は、 virtualenv を使用していないと、次のエラーが発生する可能性があります。

File "/Library/Python/2.7/site-packages/snowflake/connector/ocsp_pyopenssl.py", line nn, in dump_publickey
  bio = OpenSSL.crypto._new_mem_buf()
AttributeError: 'module' object has no attribute '_new_mem_buf'

この問題を解決するには、次の2つのオプションのいずれかを使用します。

  • Pythonランタイム環境を分離するには、 virtualenv または pyvenv を使用します。

  • 新しくインストールされた pyOpenSSL が代わりに使用されるように、 PYTHONPATH 環境変数を設定します。例:

    export PYTHONPATH=/Library/Python/2.7/site-packages
    

注釈

Pythonコネクタの最近および将来のバージョンは、Python 3.xのみをサポートします。まだPython 2.7と古いバージョンのPythonコネクタを使用している場合は、コネクタとPythonの両方をアップグレードすることをお勧めします。

OpenSSL および FFI (Linuxのみ)

Python用Snowflakeコネクタがインストールされると、 pip はLinuxプラットフォーム上のパッケージのネイティブコードをコンパイルします。正常にインストールするには、必要なパッケージをインストールします。

  • CentOSには、 yum を使用します。

    sudo yum install -y libffi-devel openssl-devel
    
  • Ubuntuには、 apt-get を使用します。

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

他のプラットフォームはPythonパッケージにバンドルされているため、 OS パッケージをインストールする必要はありません。

ステップ1:コネクタをインストールする

Pandasデータ分析ライブラリのサポートの有無にかかわらず、Python用Snowflakeコネクタをインストールできます。PandasをサポートするSnowflakeのインストール手順については、 PythonコネクタでのPandas DataFrames の使用 をご参照ください。

PandasをサポートせずにPythonコネクタをインストールするには、このセクションの手順に進みます。

Python用Snowflakeコネクタは PyPI で利用可能です。サイトで変更ログを利用できるため、各リリースで実装された変更を確認できます。

コネクタをインストールするには、次のコマンドを実行します。

pip install --upgrade snowflake-connector-python

pip は、すべての必要なモジュールを自動的にインストールします。

注釈

  • 前述したように、 pip (または pip3)を実行するには、 sudo を使用する必要がある場合があります。これにより、ファイルの書き込み/コピーに必要な権限が確保されます。

  • pip がコンパイルエラーを返す場合、CコンパイラとPython開発パッケージをインストールして、 PyCryptoDome などの必要なモジュールをビルドする必要がある場合があります。

    Cコンパイラのインストールの詳細については、http://gcc.gnu.org/(Linux)またはhttps://developer.apple.com/xcode/(macOS)をご参照ください。

ステップ2:インストールを確認する

次のPythonサンプルコードを含むファイル(例: validate.py)を作成します。これは、Snowflakeに接続し、Snowflakeバージョンを表示します。

#!/usr/bin/env python
import snowflake.connector

# Gets the version
ctx = snowflake.connector.connect(
    user='<your_user_name>',
    password='<your_password>',
    account='<your_account_name>'
    )
cs = ctx.cursor()
try:
    cs.execute("SELECT current_version()")
    one_row = cs.fetchone()
    print(one_row[0])
finally:
    cs.close()
ctx.close()

<ユーザー名><パスワード>、 および <アカウント名> をSnowflakeアカウントの適切な値に置き換えてください。

重要

アカウント名は 必須 です。さらに、完全なアカウント名には、アカウントがホストされている 地域 および クラウドプラットフォーム を識別する 追加 のセグメントが含まれている場合があります。

地域別のアカウント名の例

アカウント名が xy12345 の場合、

クラウドプラットフォーム/地域

完全なアカウント名

AWS

US 西部(オレゴン)

xy12345

US 東部(オハイオ)

xy12345.us-east-2.aws

US 東部(バージニア北部)

xy12345.us-east-1

US 東部(商業組織、バージニア政府北部)

xy12345.us-east-1-gov.aws

カナダ(中部)

xy12345.ca-central-1.aws

EU (アイルランド)

xy12345.eu-west-1

EU (フランクフルト)

xy12345.eu-central-1

アジア太平洋(東京)

xy12345.ap-northeast-1.aws

アジア太平洋(ムンバイ)

xy12345.ap-south-1.aws

アジア太平洋(シンガポール)

xy12345.ap-southeast-1

アジア太平洋(シドニー)

xy12345.ap-southeast-2

GCP

US 中央部1(アイオワ)

xy12345.us-central1.gcp

ヨーロッパ西部2(ロンドン)

xy12345.europe-west2.gcp

ヨーロッパ西部4(オランダ)

xy12345.europe-west4.gcp

Azure

西 US 2(ワシントン)

xy12345.west-us-2.azure

東 US 2(バージニア)

xy12345.east-us-2.azure

US 政府バージニア

xy12345.us-gov-virginia.azure

カナダ中央部(トロント)

xy12345.canada-central.azure

西ヨーロッパ(オランダ)

xy12345.west-europe.azure

スイス北部(チューリッヒ)

xy12345.switzerland-north.azure

東南アジア(シンガポール)

xy12345.southeast-asia.azure

オーストラリア東部(ニューサウスウェールズ)

xy12345.australia-east.azure

重要

次のいずれかの条件に該当する場合、アカウント名はこの例の構造とは異なります。

  • Snowflake Editionが VPS の場合、アカウント名の詳細については Snowflakeサポート にお問い合わせください。

  • AWS PrivateLink がアカウントで有効になっている場合、アカウント名には追加の privatelink セグメントが 必要 です。詳細については、 AWS PrivateLink とSnowflake をご参照ください。

また、アカウント名の一部としてSnowflakeドメイン名(snowflakecomputing.com)を 含めない でください。Snowflakeはアカウント名にドメイン名を自動的に追加して、必要な接続を作成します。

Snowflake Python APIの詳細については、 Pythonコネクタ API、特に snowflake.connector メソッド を参照して、サポートされているコネクタパラメーターの詳細を確認してください。

次に、サンプルコードを実行します。たとえば、 validate.py という名前のファイルを作成した場合、

python validate.py

Snowflakeバージョン(例: 3.5.0)が表示されます。

次のエラーメッセージが表示される場合は、Pythonインストールに適切なセキュリティ修正が含まれていない可能性があります。

ERROR: The ssl package installed with your Python package - version n.n.n -
does not have the required security fixes. Upgrade to 3.5.0 or higher.

ステップ3:一時ディレクトリを指定する

Python用Snowflakeコネクタは、一時ディレクトリを使用して、ロードおよびアンロード用のデータ( PUTGET)、およびその他のタイプの一時データを保存します。

一時ディレクトリは、環境変数 TMPDIRTEMP または TMP を設定することで明示的に指定できます。それ以外の場合は、オペレーティングシステムのデフォルトの一時ディレクトリ(つまり、 /tmpC:\temp)が使用されます。

システムのデフォルトの一時ディレクトリボリュームが処理中のデータに対して十分な大きさでない場合、サポートされている環境変数のいずれかを使用して別のディレクトリを指定する必要があります。

たとえば、ターミナルウィンドウから次のコマンドを実行します。

export TMPDIR=/large_tmp_volume