Пример подключения Snowflake к Python
В предыдущем посте мы привели пример как загрузить данные из S3 в Snowflake. Data Scientists и Data Engineers хорошо знакомы с Python и Pandas Data Frames, поэтому очень важно иметь возможность соединять Snowflake с Python. В этом руководстве мы покажем вам, как получить данные из Snowflake в вашей локальной среде на Python.
База данных и таблицы Snowflake
Для этого руководства мы создали базу данных с именем GPIPIS_DB
, в которой есть таблица с именем MYIRISTABLE
.
Установите библиотеки Python
Нам потребуется установить следующие библиотеки Python.
pip install snowflake-connector-python pip install --upgrade snowflake-sqlalchemy pip install "snowflake-connector-python[pandas]"
Есть разные способы получить данные из Snowflake в Python. Ниже мы приводим несколько примеров, но сначала давайте загрузим библиотеки.
import snowflake.connector import pandas as pd from snowflake.sqlalchemy import URL from sqlalchemy import create_engine
Получить данные как фрейм данных Pandas с помощью sqlalchemy
Нам нужно будет создать механизм подключения, а затем выполнить SQL-запрос. Обратите внимание, что идентификатор учетной записи (account) - это то, что вы видите в URL-адресе до .snowflakecomputing.com
url = URL( user='XXX', password='XXX', account='<ACCOUNT_ID>', warehouse='TEST_WH', database='GPIPIS_DB', schema='PUBLIC', role = 'ACCOUNTADMIN' ) engine = create_engine(url) connection = engine.connect() query = ''' select * from myiristable ''' df = pd.read_sql(query, connection) df
Как мы видим, нам удалось загрузить таблицу снежинок в нашу локальную среду.
Получить данные как фрейм данных Pandas с помощью snowflake.connector и fetch_pandas_all
Если вы установили snowflake-connector-python[pandas]
, вы можете загрузить данные следующим образом.
conn = snowflake.connector.connect( user='XXX', password='XXX', account='<ACCOUNT_ID>', warehouse='TEST_WH', database='GPIPIS_DB', schema='PUBLIC', role = 'ACCOUNTADMIN' ) cur = conn.cursor() sql = "select * from myiristable" cur.execute(sql) df = cur.fetch_pandas_all() df
Получить данные как фрейм данных Pandas, используя snowflake.connector и from_records
В качестве альтернативы мы можем перебрать объект cur
следующим образом:
conn = snowflake.connector.connect( user='XXX', password='XXX', account='<ACCOUNT_ID>', warehouse='TEST_WH', database='GPIPIS_DB', schema='PUBLIC', role = 'ACCOUNTADMIN' ) cur = conn.cursor() sql = "select * from myiristable" cur.execute(sql) df = pd.DataFrame.from_records(iter(cur), columns=[x[0] for x in cur.description]) df
Получите данные, перебирая курсор
Наконец, мы можем получить данные, перебирая курсор следующим образом:
conn = snowflake.connector.connect( user='XXX', password='XXX', account='<ACCOUNT_ID>', warehouse='TEST_WH', database='GPIPIS_DB', schema='PUBLIC', role = 'ACCOUNTADMIN' ) cur = conn.cursor() sql = "select * from myiristable" cur.execute(sql) for record in cur: print(record)
Мы можем получить данные для каждого столбца следующим образом:
cur.execute(sql) for i,j,k,l,m in cur: print(i,j,k,l,m)
Закройте соединения
Как только мы закончим, мы можем закрыть соединения:
conn.close() connection.close() cur.close()
Эта статья изначально была опубликована компанией Predictive Hacks