亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AttributeError:“SnowflakeCursor”對象沒有屬性“cursor”

AttributeError:“SnowflakeCursor”對象沒有屬性“cursor”

喵喔喔 2023-12-26 17:04:09
我正在嘗試使用 to_sql 方法將我的 DataFrame 寫入 Snowflake。sf_conn = snowflake.connector.connect(    account=*****,    user=*****,    password=*****,    role=*****,    warehouse=*****,    database=*****    )sf_cur = sf_conn.cursor()df = pd.DataFrame([('Mark', 10), ('Luke', 20)], columns=['name', 'balance'])df.to_sql('TEST3',con=sf_cur, schema='public', index=False)但還沒有運氣。File "/home/karma/.local/lib/python3.6/site-packages/pandas/io/sql.py", line 1584, in execute    cur = self.con.cursor()AttributeError: 'SnowflakeCursor' object has no attribute 'cursor'甚至嘗試給予con=sf_conn但收到以下錯誤:pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting我可以使用 sqlAlchemy create_engine lib 完成相同的工作,但想使用專門的雪花連接。
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

將pandas.DataFrame.to_sql與 Snowflake 一起使用時,需要使用 SQLAlchemy 引擎作為連接。

當您使用 時df.to_sql,您需要傳入 SQLAlchemy 引擎而不是標準 Snowflake 連接對象(也不是您嘗試做的游標)。您需要snowflake-sqlalchemy使用 pip 安裝,但不需要安裝snowflake-connector-python,因為 Snowflake-sqlalchemy 會為您完成此操作。

這是一個例子:

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

每次我運行上面的腳本時,馬可福音和路加福音的記錄都會附加到我的test_db.public.test_table表中。


查看完整回答
反對 回復 2023-12-26
  • 1 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號