Пример подключения 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