Installation du connecteur Python

Ce chapitre fournit des instructions pour installer le connecteur Snowflake pour Python. Le connecteur peut actuellement être installé dans les environnements Linux, macOS et Windows.

Les notes du développeur sont hébergées sur GitHub, avec le code source.

Dans ce chapitre :

Conditions préalables

Pour obtenir la liste des systèmes d’exploitation pris en charge par les clients Snowflake, voir Prise en charge par les systèmes d’exploitation.

Les logiciels suivants sont requis pour installer le connecteur Snowflake pour Python.

Python

Sous linux et macOS, le connecteur Snowflake pour Python nécessite Python 3.5, 3.6, 3.7 ou 3.8.

Sur MS-Windows, le connecteur Snowflake pour Python nécessite Python 3.5, 3.6 ou 3.7.

Pour vérifier votre version de Python :

python --version

Pour plus d’informations sur l’installation de la version requise de Python, voir :

Programme d’installation de pack Python et outils de configuration

Le connecteur Snowflake pour Python est installé par pip, un programme d’installation et un gestionnaire de pack standard Python.

Utilisez la version pip 19.0 ou ultérieure. Exécutez la commande suivante pour vous assurer que la version requise est installée :

python -m pip install --upgrade pip

Note

  • Sur macOS, utilisez virtualenv ou pyvenv pour installer Python et le connecteur.

  • Si Python 2.7.x et Python 3.5.x sont installés, utilisez pip3 pour installer le connecteur avec Python 3.5.x.

  • Si pip (ou pip3) est installé dans le répertoire système ou dans un répertoire partagé, utilisez sudo pour exécuter la commande ci-dessus, ce qui vous assure d’avoir les privilèges requis pour écrire/copier des fichiers dans le répertoire.

Packages Python

Le connecteur Python utilise de nombreux packages Python. Snowflake documente les numéros de version des packages utilisés pour tester chaque version du connecteur Python ; les documents se situent à l’adresse suivante : https://github.com/snowflakedb/snowflake-connector-python/tree/master/tested_requirements.

Le référentiel contient un fichier pour chaque version de Python (par exemple 3.7) prise en charge par le connecteur Python. Chaque fichier se compose de lignes comme les suivantes :

asn1crypto==1.3.0

L’élément à gauche du == est le nom du package et l’élément à droite du == est le numéro de version de ce package.

Snowflake vous recommande d’utiliser la même version de la bibliothèque que Snowflake a utilisée lors des tests. Snowflake vous recommande de ne pas remplacer les dépendances épinglées ni d’utiliser des applications susceptibles de remplacer les dépendances épinglées.

pyOpenSSL (macOS uniquement)

macOS (Yosemite et versions supérieures) comprend Python 2.7.x. Si vous utilisez Python 2.7.x et si votre version de pyOpenSSL est obsolète, vous pourriez rencontrer l’erreur suivante si vous n’utilisez pas 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'

Pour résoudre ce problème, utilisez l’une des deux options suivantes :

  • Utilisez virtualenv ou pyvenv pour isoler les environnements d’exécution Python.

  • Définissez la variable d’environnement PYTHONPATH de sorte que le pyOpenSSL nouvellement installé soit utilisée à la place. Par exemple :

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

Note

Les versions récentes et futures du connecteur Python ne prennent en charge que Python 3.x. Si vous utilisez toujours Python 2.7 et une ancienne version du connecteur Python, Snowflake vous encourage à mettre à niveau le connecteur et Python.

OpenSSL et FFI (Linux uniquement)

Lorsque le connecteur Snowflake pour Python est installé, pip compile les codes natifs dans les packs sur les plateformes Linux. Afin de l’installer avec succès, installez les packages requis :

  • Pour CentOS, utilisez yum :

    sudo yum install -y libffi-devel openssl-devel
    
  • Pour Ubuntu, utilisez apt-get :

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

Les autres plateformes n’ont pas besoin d’installer les packages OS car ils sont regroupés dans les packages Python.

Étape 1 : Installer le connecteur

Vous pouvez installer le connecteur Snowflake pour Python avec ou sans prise en charge de la bibliothèque d’analyse de données Pandas. Pour obtenir des instructions sur l’installation de Snowflake avec prise en charge de Pandas, voir Utilisation de DataFrames Pandas avec le connecteur Python.

Pour installer le connecteur Python sans prise en charge de Pandas, continuez avec les instructions de cette section.

Le connecteur Snowflake pour Python est disponible dans PyPI. Un journal des modifications est disponible sur le site, ce qui vous permet de déterminer les modifications qui ont été apportées dans chaque version.

Pour installer le connecteur, exécutez la commande suivante :

pip install --upgrade snowflake-connector-python

pip installe automatiquement tous les modules nécessaires.

Note

  • Comme mentionné précédemment, vous devriez peut-être utiliser sudo pour exécuter pip (ou pip3), ce qui vous assure d’avoir les privilèges requis pour écrire/copier des fichiers.

  • Si pip retourne des erreurs de compilation, vous devriez peut-être installer le compilateur C et le package de développement Python pour construire certains des modules requis, tels que PyCryptoDome.

    Pour plus d’informations sur l’installation d’un compilateur C, voir http://gcc.gnu.org/ (Linux) ou https://developer.apple.com/xcode/ (macOS).

Étape 2 : Vérifier votre installation

Créez un fichier (par exemple validate.py) contenant le code exemple Python suivant qui se connecte à Snowflake et affiche la version 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()

Veillez à remplacer <votre_nom_utilisateur>, <votre_mot_de_passe> et <votre_nom_compte> par les valeurs correspondantes pour votre compte Snowflake.

Important

Le nom du compte est obligatoire. De plus, notez que votre nom de compte complet peut inclure des segments supplémentaires identifiant la région et la plate-forme cloud où votre compte est hébergé.

Exemples de noms de compte par région

Si votre nom de compte est xy12345 :

Plate-forme Cloud/Région

Nom de compte complet

AWS

US Ouest (Oregon)

xy12345

US Est (Ohio)

xy12345.us-east-2.aws

US Est (Virginie du Nord)

xy12345.us-east-1

US Est (Gouvernement commercial - Virginie du Nord)

xy12345.us-east-1-gov.aws

Canada (Centre)

xy12345.ca-central-1.aws

EU (Irlande)

xy12345.eu-west-1

EU (Francfort)

xy12345.eu-central-1

Asie-Pacifique (Tokyo)

xy12345.ap-northeast-1.aws

Asie Pacifique (Mumbai)

xy12345.ap-south-1.aws

Asie-Pacifique (Singapour)

xy12345.ap-southeast-1

Asie-Pacifique (Sydney)

xy12345.ap-southeast-2

GCP

US Central1 (Iowa)

xy12345.us-central1.gcp

Europe Ouest2 (Londres)

xy12345.europe-west2.gcp

Europe Ouest4 (Pays-Bas)

xy12345.europe-west4.gcp

Azure

Ouest US 2 (Washington)

xy12345.west-us-2.azure

Est US 2 (Virginie)

xy12345.east-us-2.azure

US Gov Virginia

xy12345.us-gov-virginia.azure

Canada Central (Toronto)

xy12345.canada-central.azure

Europe de l’Ouest (Pays-Bas)

xy12345.west-europe.azure

Suisse Nord (Zurich)

xy12345.switzerland-north.azure

Asie du Sud-Est (Singapour)

xy12345.southeast-asia.azure

Australie Est (Nouvelle-Galles du Sud)

xy12345.australia-east.azure

Important

Si l’une des conditions suivantes est remplie, le nom de votre compte est différent de la structure décrite dans cet exemple :

  • Si votre édition Snowflake est VPS, contactez le support Snowflake pour obtenir des détails sur le nom de votre compte.

  • Si AWS PrivateLink est activé pour votre compte, le nom de votre compte nécessite un segment privatelink supplémentaire. Pour plus de détails, voir AWS PrivateLink et Snowflake.

Attention, n’incluez pas le nom de domaine de Snowflake (snowflakecomputing.com) dans le nom de votre compte. Snowflake ajoute automatiquement le nom de domaine à votre nom de compte pour créer la connexion requise.

Pour plus d’informations sur l’API Python Snowflake , voir Connecteur Python API, en particulier les méthodes snowflake.connector pour plus d’informations sur les paramètres de connecteur pris en charge.

Exécutez ensuite l’exemple de code. Par exemple, si vous avez créé un fichier nommé validate.py :

python validate.py

La version Snowflake (par ex. 3.5.0) doit être affichée.

Si vous voyez le message d’erreur suivant, cela signifie que votre installation Python ne possède probablement pas les correctifs de sécurité appropriés :

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.

Étape 3 : Spécifier un répertoire temporaire

Le connecteur Snowflake pour Python utilise un répertoire temporaire pour stocker les données pour le chargement et le déchargement (PUT, GET), ainsi que d’autres types de données temporaires.

Le répertoire temporaire peut être explicitement spécifié en définissant les variables d’environnement TMPDIR, TEMP ou TMP. Sinon, le répertoire temporaire par défaut du système d’exploitation (c.-à-d. /tmp, C:\temp) est utilisé.

Si le volume de répertoire temporaire par défaut du système n’est pas assez grand pour les données traitées, vous devez spécifier un autre répertoire en utilisant les variables d’environnement prises en charge.

Par exemple, à partir d’une fenêtre de terminal, exécutez la commande suivante :

export TMPDIR=/large_tmp_volume