Nastavenie Snowflake converter_class Stále mení na Python Typy Údajov

0

Otázka

V docs pre python Snowflake konektor, hovorí, že nastavenie pripojenia parameter converter_class pri vytváraní spojenia objekt môže byť použitý na potlačenie obrátenie, python typy (listy údaje ako reťazce). Ale nevidím žiadny rozdiel medzi dotazy spúšťať s nasledujúcimi dvoma pripojenia (použitím 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'
    )

Dotazy vykonaný z oboch DBH1 a DBH2 vrátiť časové ako python datetime objekty, a nie reťazce. Všimol som si, že v doc na snowflake.connector parametre, nie je tam žiadna zmienka o tom, converter_class možnosť - tento trik je len uvedené v "optimalizácia dát ťahá" oddiel tu: https://docs.snowflake.com/en/user-guide/python-connector-example.html#improving-query-performance-by-bypassing-data-conversion. Je možné, že táto funkcia bola zmazaná bez čistenia doc?

1

Najlepšiu odpoveď

1

Ak je táto funkcia bola pridaná spočiatku to bolo určené len pre JSON výsledok nastaviť formát. Od tej doby sme sa sťahovali výsledok nastaviť na ŠÍPKU a pre tento formát, nefunguje to skutočne (ŠÍPKA je predvolený formát teraz).

Na preukázanie som použiť tento kód:

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))

To sa vráti na mňa:

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

Teraz, som sa zmeniť výsledok nastaviť formát späť na pôvodné JSON:

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

Tentoraz som si:

1637742958.657000000
<class 'str'>
True

Na ŠÍPKU formát má niekoľko výhod oproti JSON a viac si môžete prečítať tu

2021-11-24 08:37:12

V iných jazykoch

Táto stránka je v iných jazykoch

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