Réglage de Flocon de neige converter_class Encore Convertis à Python les Types de Données

0

La question

Dans les docs pour le python de Flocon de neige de connecteur, il est dit que le réglage du paramètre de connexion converter_class lors de la création de l'objet de connexion peut être utilisé pour supprimer la conversion de types de python (feuilles de données comme des chaînes de caractères). Mais je ne vois pas de différence entre les requêtes exécutées avec les deux connexions (à l'aide de snowflake-connector-python=2.7.0):

from snowflake.connector.converter_null import SnowflakeNoConverterToPython

DBH1 = snowflake.connector.connect(
       user='username',
       password='password',
       account='account',
       converter_class=SnowflakeNoConverterToPython      # why isn't this working?
    )

DBH2 = snowflake.connector.connect(
       user='username',
       password='password',
       account='account'
    )

Requêtes exécutées à partir de deux DBH1 et DBH2 les horodatages de retour que python datetime objets, et non pas des chaînes de caractères. J'ai remarqué que dans la doc sur snowflake.connector paramètres, il n'est fait mention d'un converter_class l'option - cette astuce n'est répertorié dans "l'optimisation des données tire" l'article ici: https://docs.snowflake.com/en/user-guide/python-connector-example.html#improving-query-performance-by-bypassing-data-conversion. Est-il possible que cette fonctionnalité a été supprimée sans le nettoyage de la doc?

1

La meilleure réponse

1

Lorsque cette fonction a été ajouté au début c'était seulement pour JSON ensemble de résultats de format. Depuis lors, nous avons migré l'ensemble des résultats à la FLÈCHE et pour ce format, il ne fonctionne pas en effet (FLÈCHE est le format par défaut maintenant).

Pour démontrer que je utilisez ce code:

ctx = snowflake.connector.connect(
        user=USER,
        password=PASSWORD,
        account=ACCOUNT,
        role=ROLE,
        database=DATABASE,
        schema=SCHEMA,
        warehouse=WAREHOUSE,
        converter_class=SnowflakeNoConverterToPython
        )

cs = ctx.cursor()

try:
        cs.execute("SELECT CURRENT_TIMESTAMP()")
        res  = cs.fetchone()
        print(f'{res[0]}')
        print(type(res[0]))
        print(isinstance(res[0], str))

Cela me renvoie:

2021-11-24 21:34:44.314000+13:00
<class 'datetime.datetime'>
False

Maintenant, je change le résultat de définir le format de retour à l'original JSON:

try:
        cs.execute("alter session set python_connector_query_result_format='JSON'")
        cs.execute("SELECT CURRENT_TIMESTAMP()")

Cette fois, j'obtiens:

1637742958.657000000
<class 'str'>
True

La FLÈCHE format a plusieurs avantages sur le JSON et vous pouvez en lire plus ici

2021-11-24 08:37:12

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................