1 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
將pandas.DataFrame.to_sql與 Snowflake 一起使用時(shí),需要使用 SQLAlchemy 引擎作為連接。
當(dāng)您使用 時(shí)df.to_sql
,您需要傳入 SQLAlchemy 引擎而不是標(biāo)準(zhǔn) Snowflake 連接對(duì)象(也不是您嘗試做的游標(biāo))。您需要snowflake-sqlalchemy
使用 pip 安裝,但不需要安裝snowflake-connector-python
,因?yàn)?Snowflake-sqlalchemy 會(huì)為您完成此操作。
這是一個(gè)例子:
from sqlalchemy import create_engine
import os
import pandas as pd
snowflake_username = os.environ['SNOWFLAKE_USERNAME']
snowflake_password = os.environ['SNOWFLAKE_PASSWORD']
snowflake_account = os.environ['SNOWFLAKE_ACCOUNT']
snowflake_warehouse = os.environ['SNOWFLAKE_WAREHOUSE']
snowflake_database = 'test_db'
snowflake_schema = 'public'
if __name__ == '__main__':
? ? engine = create_engine(
? ? ? ? 'snowflake://{user}:{password}@{account}/{db}/{schema}?warehouse={warehouse}'.format(
? ? ? ? ? ? user=snowflake_username,
? ? ? ? ? ? password=snowflake_password,
? ? ? ? ? ? account=snowflake_account,
? ? ? ? ? ? db=snowflake_database,
? ? ? ? ? ? schema=snowflake_schema,
? ? ? ? ? ? warehouse=snowflake_warehouse,
? ? ? ? )
? ? )
? ? df = pd.DataFrame([('Mark', 10), ('Luke', 20)], columns=['name', 'balance'])
? ? df.to_sql('TEST_TABLE', con=engine, schema='public', index=False, if_exists='append')
每次我運(yùn)行上面的腳本時(shí),馬可福音和路加福音的記錄都會(huì)附加到我的test_db.public.test_table表中。
添加回答
舉報(bào)