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

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

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

このトピックの内容:

前提条件

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

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

Python

Python用Snowflakeコネクタには、Python 3.6, 3.7, 3.8, or 3.9 が必要です。

使用しているPythonのバージョンを確認するには、

python --version

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

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

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

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

python -m pip install --upgrade pip

注釈

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

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

Pythonパッケージ

Python用Snowflakeコネクタは、多くのPythonパッケージを使用します。コネクタは、各パッケージのさまざまなバージョンをサポートしています。(詳細については、 Pythonコネクタの依存関係管理ポリシー を参照。)

これらのパッケージについては、Snowflakeがテスト中に使用したのと同じバージョン(これらのパッケージでサポートされている最小バージョン)を使用することをお勧めします。固定された依存関係を上書きしたり、固定された依存関係を上書きする可能性のあるアプリケーションを使用したりしないこともお勧めします。

コネクタでテストされたパッケージバージョンは、 これらの要件ファイル に記載されています。各要件ファイルは、Pythonの特定のバージョンに適用されます。たとえば、 requirements_36.reqs はPython 3.6でテストされたバージョンを一覧表示します。

各要件は、次のような行で構成されます。

asn1crypto==1.3.0

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

これらの要件ファイルを使用して必要なパッケージをインストールする手順については、 ステップ1:コネクタをインストールする をご参照ください。

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 または venv を使用します。

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

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

注釈

Pythonコネクタの最近および将来のバージョンは、Python 2.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:コネクタをインストールする

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

Python用Snowflakeコネクタのバージョンをインストールする場合は、そのバージョンのコネクタでテストされた依存ライブラリのバージョンをインストールすることをお勧めします。

Python用Snowflakeコネクタと依存ライブラリをインストールするには、

  1. インストールする予定のPython用Snowflakeコネクタのバージョンを確認します。

  2. 依存ライブラリをインストールするには、 pip (または pip3)コマンドを実行し、そのバージョンのコネクタの 要件ファイル をポイントします。

    たとえば、Python用Snowflakeコネクタの最新バージョンが 2.4.3 で、現在Python 3.6 を使用しているとします。そのバージョンのコネクタの依存ライブラリをインストールするには、次のコマンドを実行します。

    pip install -r https://raw.githubusercontent.com/snowflakedb/snowflake-connector-python/v2.4.3/tested_requirements/requirements_36.reqs

    上記の例では、要件ファイルへのパスでコネクタのバージョン(「/v2.4.3/」)を指定しています。要件ファイル名(「requirements _36.reqs」)は、Pythonのバージョン(Python 3.6)を指定します。

    注釈

    Python用Snowflakeコネクタの2.2.0から2.3.5までのバージョンをインストールする必要がある場合は、要件ファイル名の .reqs.txt に置き換えます。たとえば、 requirements_36.reqs ではなく requirements_36.txt を使用します。

    pip コマンドの実行がコンパイルエラーを返す場合は、 PyCryptoDome などの必要なモジュールをビルドするために、CコンパイラとPython開発パッケージのインストールが必要になる可能性があります。

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

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

    pip install snowflake-connector-python==<version>
    

    ここで、 バージョン は、インストールするコネクタのバージョンです。

    たとえば、Python用Snowflakeコネクタのバージョン 2.4.3 をインストールするには、次のコマンドを実行します。

    pip install snowflake-connector-python==2.4.3

    注釈

    接続キャッシュを使用して認証のプロンプト数を最小限に抑制 --- オプション 予定の場合は、 secure-local-storage のエクストラもインストールする必要があります。詳細については、 接続キャッシュを使用して認証のプロンプト数を最小限に抑制 --- オプション をご参照ください。

    Pandas DataFrames の API サポートを使用する場合は、 pandas のエクストラもインストールする必要があります。詳細については、 PythonコネクタでのPandas DataFrames の使用 をご参照ください。

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

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

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

# Gets the version
ctx = snowflake.connector.connect(
    user='<user_name>',
    password='<password>',
    account='<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 の場合:

クラウドプラットフォーム / . リージョン

アカウントロケーター . (必要に応じて追加のセグメントを含む)

Amazon Web Services(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

ヨーロッパ(ロンドン)

xy12345.eu-west-2.aws

EU (フランクフルト)

xy12345.eu-central-1

アジア太平洋(東京)

xy12345.ap-northeast-1.aws

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

xy12345.ap-south-1.aws

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

xy12345.ap-southeast-1

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

xy12345.ap-southeast-2

Google Cloud Platform(GCP)

US 中央部1(アイオワ)

xy12345.us-central1.gcp

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

xy12345.europe-west2.gcp

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

xy12345.europe-west4.gcp

Microsoft 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 またはAzure Private Linkが有効になっており、プライベート接続を使用してSnowflakeに接続する場合は、 SYSTEM$GET_PRIVATELINK_CONFIG 関数を実行して、使用するプライベート接続 URL を決定します。

    プライベート接続の詳細については、以下をご参照ください。

また、アカウント名の一部として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.6.0 or higher.

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

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

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

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

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

export TMPDIR=/large_tmp_volume