Python数据框值插入到数据库表列

时间:2018-08-06 07:04:53

标签: python sql snowflake

是否可以将python数据框值插入数据库表列?

我正在使用雪花作为数据库。

CommuteTime是包含StudentID列的表。 “ add_col”是python数据框。我需要将df值插入StudentID列。

以下是我尝试将df值插入表列的代码。

c_col = pd.read_sql_query('insert into "SIS_WIDE"."PUBLIC"."CommuteTime" ("StudentID") VALUES ("add_col")', engine)

当我执行上面的命令时,它不接受数据帧。抛出以下错误。

ProgrammingError: (snowflake.connector.errors.ProgrammingError) 000904 (42000): SQL compilation error: error line 1 at position 68
invalid identifier '"add_col"' [SQL: 'insert into "SIS_WIDE"."PUBLIC"."CommuteTime" ("StudentID") VALUES ("add_col")'] 
(Background on this error at: http://sqlalche.me/e/f405)

请提供建议以解决此问题。

2 个答案:

答案 0 :(得分:0)

您无法使用pd.read_sql_query来实现。

首先,您需要创建Snowflake cursor

例如

import snowflake.connector

cursor = snowflake.connector.connect(
user='username',
password='password',
database='database_name',
schema='PUBLIC',
warehouse='warehouse_name'
).cursor()

一旦有了光标,就可以像这样查询:cursor.execute("SELECT * from "CommuteTime")

要将数据插入表中,您需要使用INSERT INTO from Snowflake

请提供有关数据框的更多信息,以进一步帮助您。

答案 1 :(得分:0)

我只能使用 SQL Alchemy (而不是Snowflake Python Connector)来做到这一点。

from sqlalchemy import create_engine

# Establish the connection to the Snowflake database
sf = 'snowflake://{}:{}@{}{}'.format(user, password, account, table_location)
engine = create_engine(sf)
# Write your data frame to a table in database 
add_col.to_sql(table_name, con=engine, if_exists='replace', index=False)

请参见here,以了解如何通过传递usernamepasswordaccounttable location与Snowflake建立连接。

浏览here,以了解可以作为if_exists传递给函数to_sql()的参数。