Installieren des Python-Konnektors

Unter diesem Thema finden Sie Anweisungen zur Installation des Snowflake-Konnektors für Python. Dieser Konnektor kann derzeit in Linux-, macOS- und Windows-Umgebungen installiert werden.

Die Entwicklerhinweise werden zusammen mit dem Quellcode auf GitHub bereitgestellt.

Unter diesem Thema:

Voraussetzungen

Eine Liste der von Snowflake-Clients unterstützten Betriebssysteme finden Sie unter Betriebssystemunterstützung.

Die folgenden Softwarepakete werden benötigt, um den Snowflake-Konnektor für Python zu installieren.

Python

Unter Linux und macOS benötigt der Snowflake-Konnektor für Python die Python-Version 3.5, 3.6, 3.7 oder 3.8.

Unter MS Windows benötigt der Snowflake Konnektor für Python die Python-Version 3.5, 3.6 oder 3.7.

So prüfen Sie Ihre Python-Version:

python --version

Weitere Informationen zur Installation der erforderlichen Version von Python finden Sie unter:

Python-Paket-Installer und Setup-Tools

Der Snowflake-Konnektor für Python wird mit pip installiert, einem Standard-Paketinstaller und -Manager für Python.

Verwenden Sie pip mit Version 19.0 oder höher. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass die erforderliche Version installiert ist:

python -m pip install --upgrade pip

Bemerkung

  • Verwenden Sie unter macOS entweder virtualenv oder pyvenv, um Python und den Konnektor zu installieren.

  • Wenn sowohl Python 2.7.x als auch Python 3.5.x installiert sind, verwenden Sie pip3, um den Konnektor mit Python 3.5.x zu installieren.

  • Wenn pip (oder pip3) im Systemverzeichnis oder einem freigegebenen Verzeichnis installiert ist, verwenden Sie sudo, um den obigen Befehl auszuführen, der sicherstellt, dass Sie über die erforderlichen Berechtigungen zum Schreiben/Kopieren von Dateien in das Verzeichnis verfügen.

Python-Pakete

Der Python-Konnektor verwendet viele Python-Pakete. Snowflake dokumentiert die Versionsnummern der Pakete, die zum Testen jedes Release des Python-Konnektors verwendet wurden. Die Dokumente befinden sich unter https://github.com/snowflakedb/snowflake-connector-python/tree/master/tested_requirements.

Das Repository enthält eine Datei für jede Version von Python (z. B. 3.7), die der Python-Konnektor unterstützt. Jede Datei besteht aus Zeilen wie den folgenden:

asn1crypto==1.3.0

Das Element links von == ist der Name des Pakets, und das Element rechts von == ist die Versionsnummer dieses Pakets.

Snowflake empfiehlt, dass Sie dieselbe Version der Bibliothek verwenden, die Snowflake beim Testen verwendet hat. Snowflake empfiehlt, angeheftete Abhängigkeiten nicht zu überschreiben oder Anwendungen zu verwenden, die angeheftete Abhängigkeiten möglicherweise überschreiben.

pyOpenSSL (nur macOS)

macOS (Yosemite und höhere Versionen) enthält Python 2.7.x. Wenn Sie Python 2.7.x verwenden und Ihre pyOpenSSL-Version veraltet ist, und Sie nicht virtualenv verwenden, kann folgender Fehler auftreten:

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'

Um dieses Problem zu beheben, verwenden Sie eine der folgenden beiden Optionen:

  • Verwenden Sie entweder virtualenv oder pyvenv, um die Python-Laufzeitumgebungen zu isolieren.

  • Stellen Sie die Umgebungsvariable PYTHONPATH so ein, dass stattdessen das neu installierte pyOpenSSL verwendet wird. Beispiel:

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

Bemerkung

Aktuelle und zukünftige Versionen des Python-Konnektors unterstützen nur Python 3.x. Wenn Sie noch Python 2.7 und eine ältere Version des Python-Konnektors verwenden, empfiehlt Snowflake, sowohl den Konnektor als auch Python zu aktualisieren.

OpenSSL und FFI (nur Linux)

Wenn der Snowflake-Konnektor für Python installiert ist, kompiliert pip native Codes in Pakete auf Linux-Plattformen. Um es erfolgreich zu installieren, installieren Sie die erforderlichen Pakete:

  • Für CentOS verwenden Sie yum:

    sudo yum install -y libffi-devel openssl-devel
    
  • Für Ubuntu verwenden Sie apt-get:

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

Andere Plattformen benötigen die installierten Betriebssystempakete nicht, da sie in den Python-Paketen enthalten sind.

Schritt 1: Konnektor installieren

Sie können den Snowflake-Konnektor für Python mit oder ohne Unterstützung der Pandas-Datenanalysebibliothek installieren. Anweisungen zur Installation von Snowflake mit Pandas-Unterstützung finden Sie unter Verwenden von Pandas DataFrames mit dem Python-Konnektor.

Fahren Sie mit den Anweisungen in diesem Abschnitt fort, um den Python-Konnektor ohne Pandas-Unterstützung zu installieren.

Der Snowflake-Konnektor für Python ist unter PyPI verfügbar. Auf der Website ist ein Änderungsprotokoll verfügbar, mit dem Sie die Änderungen ermitteln können, die in jedem Release implementiert wurden.

Um den Konnektor zu installieren, führen Sie den folgenden Befehl aus:

pip install --upgrade snowflake-connector-python

pip installiert automatisch alle benötigten Module.

Bemerkung

  • Wie bereits erwähnt, müssen Sie möglicherweise sudo verwenden, um pip (oder pip3) auszuführen, was sicherstellt, dass Sie die erforderlichen Berechtigungen zum Schreiben/Kopieren von Dateien haben.

  • Wenn pip Kompilierungsfehler zurückgibt, müssen Sie möglicherweise den C-Compiler und das Python-Entwicklungspaket installieren, um einige erforderliche Module zu erstellen, wie z. B. PyCryptoDome.

    Weitere Informationen zur Installation eines C-Compilers finden Sie unter http://gcc.gnu.org/ (Linux) oder https://developer.apple.com/xcode/ (macOS).

Schritt 2: Installation überprüfen

Erstellen Sie eine Datei (z. B. validate.py), die den folgenden Python-Beispielcode enthält, um sich mit Snowflake zu verbinden und die Snowflake-Version anzeigt:

#!/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()

Stellen Sie sicher, dass Sie <Ihren_Benutzernamen>, <Ihr_Kennwort> und <Ihren_Kontonamen> durch die entsprechenden Werte für Ihr Snowflake-Konto ersetzen.

Wichtig

Der Kontoname ist erforderlich. Beachten Sie außerdem, dass Ihr vollständiger Kontoname möglicherweise zusätzliche Segmente enthält, die die Region und die Cloudplattform angeben, wo Ihr Konto gehostet wird.

Beispiele für Kontonamen nach Region

Wenn Ihr Kontoname beispielsweise xy12345 ist:

Cloudplattform/Region

Vollständiger Kontoname

AWS

US West (Oregon)

xy12345

US East (Ohio)

xy12345.us-east-2.aws

US East (N. Virginia)

xy12345.us-east-1

US East (Commercial Gov - N. Virginia)

xy12345.us-east-1-gov.aws

Canada (Central)

xy12345.ca-central-1.aws

EU (Irland)

xy12345.eu-west-1

EU (Frankfurt)

xy12345.eu-central-1

Asia Pacific (Tokio)

xy12345.ap-northeast-1.aws

Asia Pacific (Mumbai)

xy12345.ap-south-1.aws

Asia Pacific (Singapur)

xy12345.ap-southeast-1

Asia Pacific (Sydney)

xy12345.ap-southeast-2

GCP

US Central1 (Iowa)

xy12345.us-central1.gcp

Europe West2 (London)

xy12345.europe-west2.gcp

Europe West4 (Niederlande)

xy12345.europe-west4.gcp

Azure

West US 2 (Washington)

xy12345.west-us-2.azure

East US 2 (Virginia)

xy12345.east-us-2.azure

US Gov Virginia

xy12345.us-gov-virginia.azure

Canada Central (Toronto)

xy12345.canada-central.azure

West Europe (Niederlande)

xy12345.west-europe.azure

Switzerland North (Zürich)

xy12345.switzerland-north.azure

Southeast Asia (Singapur)

xy12345.southeast-asia.azure

Australia East (New South Wales)

xy12345.australia-east.azure

Wichtig

Wenn eine der folgenden Bedingungen zutrifft, unterscheidet sich Ihr Kontoname von der oben beschriebenen Struktur:

  • Wenn Ihre Snowflake Edition VPS ist, wenden Sie sich an den Snowflake-Support, um Details zu Ihrem Kontonamen zu erhalten.

  • Wenn für Ihr Konto AWS PrivateLink aktiviert ist, muss der Kontoname ein zusätzliches privatelink-Segment enthalten. Weitere Details dazu finden Sie unter AWS PrivateLink & Snowflake.

Beachten Sie außerdem, dass Sie nicht den Snowflake-Domänennamen (snowflakecomputing.com) als Teil Ihres Kontonamens einfügen. Snowflake hängt den Domänennamen automatisch an Ihren Kontonamen an, um die angeforderte Verbindung herzustellen.

Weitere Informationen zur Snowflake-Python API finden Sie unter Python-Konnektor-API, insbesondere unter den snowflake.connector -Methoden, wo Sie Details zu den unterstützten Konnektorparametern finden.

Führen Sie als Nächstes den Beispielcode aus. Wenn Sie beispielsweise eine Datei mit dem Namen validate.py erstellt haben:

python validate.py

Die Snowflake-Version (z. B. 3.5.0) sollte angezeigt werden.

Wenn Sie die folgende Fehlermeldung erhalten, hat Ihre Python-Installation wahrscheinlich nicht die entsprechenden Sicherheitskorrekturen erhalten:

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.

Schritt 3: Temporäres Verzeichnis angeben

Der Snowflake-Konnektor für Python verwendet ein temporäres Verzeichnis, um Daten zum Laden und Entladen (PUT, GET) sowie andere Arten von temporären Daten zu speichern.

Das temporäre Verzeichnis kann explizit durch Setzen der Umgebungsvariablen TMPDIR, TEMP oder TMP angegeben werden, andernfalls wird das standardmäßige temporäre Verzeichnis des Betriebssystems (d. h. /tmp, C:\temp) verwendet.

Wenn das standardmäßige temporäre Verzeichnis des Systems nicht genug Speicherplatz für die zu verarbeitenden Daten bietet, sollten Sie über eine der unterstützten Umgebungsvariablen ein anderes Verzeichnis angeben.

Führen Sie beispielsweise in einem Terminalfenster den folgenden Befehl aus:

export TMPDIR=/large_tmp_volume