现在我可以在ipython3笔记本中使用连接了,我正在测试使用python连接器插入和选择数据。但是,当我对此进行测试时,遇到了从python连接器插入数据帧的正确方法的问题,最终我发现sqlalchemy引擎起作用了:https://support.snowflake.net/s/question/0D50Z00009C6023SAB/how-can-i-insert-data-into-snowflake-table-from-a-panda-data-frame
但是现在我很好奇我是否也可以使用python连接器。我在笔记本中包含了以下代码。我不理解该错误消息,当我查找该错误消息时,我尝试了.to_sql https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_sql.html中的几个attributef,老实说,我在错误中有些失落,只使用了sqlalchemy方法。如果我需要使python连接正常工作以插入或追加数据,您之前见过此错误吗?我确定这只是一个编码错误。
此方法有效,但是尝试df_to_sql时,仅使用python连接就一直出现错误
mkdir target/dependency
(cd target/dependency; jar -xf ../*.jar)
带有python连接器和
的第二种方法
from sqlalchemy import create_engine
#df_data
data = pd.read_csv("data/data.csv")
data.head()
df_data = pd.DataFrame(data)
df_data=df_data.rename(columns = {'Updated ?':'updated'})
df_data=df_data.rename(columns = {'Article Id':'article_id'})
engine = create_engine(URL(
account = ACCOUNT,
user = USER,
password = PASSWORD,
database = 'testdb',
schema = 'public',
warehouse = 'MYWH',
role='ACCOUNTADMIN',
))
connection = engine.connect()
df_data.to_sql('testtb2', con=engine, index=False) #make sure index is False, Snowflake doesnt accept indexes
connection.close()
engine.dispose()
import snowflake.connector
conn = snowflake.connector.connect(
user=USER,
password=PASSWORD,
account=ACCOUNT)
conn.cursor().execute("create or replace table testtbl(article_id string, link string, status string)")
conn.cursor().execute("begin")
df_data.to_sql('testtbl', con=conn, schema ='testdb.testschema', dtype='varchar', method=None, if_exists='append',index=False) #make sure index is False, Snowflake doesnt accept indexes
conn.close()
答案 0 :(得分:1)
如我所见,Pandas to_sql函数接受“ sqlalchemy.engine.Engine”和“ sqlite3.Connection”对象作为连接。当您尝试使用雪花连接对象时,它假定它是sqlite3.Connection对象,因此会出现以下错误:
pandas.io.sql.DatabaseError:对sql'SELECT name FROM执行失败 sqlite_master ,其中type ='table'AND name = ?;':并非所有参数 在字符串格式化期间转换
如果要使用Pandas to_sql函数,则需要使用SQLAlchemy引擎。