如何使用 ODBC 驱动程序将 Pandas 数据帧加载到 Redshift 服务器?
How to to load a Pandas Data frame to Redshfit Server using OBDC driver?
我对 Python 编程比较陌生。我已经彻底搜索了以前回答过的与此相关的问题,但找不到好的解决方案。
问题:我打算使用系统中安装的 ODBC 驱动程序连接到 Red-shift 数据库。所有实体 -(服务器名、主机、端口、用户名和密码)都在 DSN 中配置。我成功地能够连接到数据库并使用以下代码读取 table:
import pyodbc
import pandas as pd
conn = pyodbc.connect('DSN=AWSDW')
Query = """select *
from <table_name>
limit 10"""
df2 = pd.read_sql(Query,conn)
但问题是我可以在 Redshift 中加载此数据框。下面是我正在尝试 运行:
的代码
engine = sqlalchemy.create_engine('postgresql+pyodbc://AWSDW')
df2.to_sql('Abhi_Testing_Python_2'
,engine
,schema='sandbox'
,index=False
,if_exists = 'replace')
我知道在创建引擎的连接字符串中需要做一些事情。只是不知道是什么?
我愿意使用其他方法,只要我不必在代码中硬编码我的用户名和密码即可。
我发现您不能将 postgresql 方言与 pyodbc 驱动程序一起使用。
https://www.codepowered.com/manuals/SQLAlchemy-0.6.9-doc/html/core/engines.html
所以,我最终没有使用我安装的亚马逊驱动程序。改为使用 psycopg2。
connection_string = 'postgresql+psycopg2://'+username+':'+password+'@'+HOST+':'+str(PORT)+'/'+DATABASE
engine = create_engine(connection_string)
这行得通。唯一的缺点是我不得不在我的代码中硬编码主机名。
我对 Python 编程比较陌生。我已经彻底搜索了以前回答过的与此相关的问题,但找不到好的解决方案。
问题:我打算使用系统中安装的 ODBC 驱动程序连接到 Red-shift 数据库。所有实体 -(服务器名、主机、端口、用户名和密码)都在 DSN 中配置。我成功地能够连接到数据库并使用以下代码读取 table:
import pyodbc
import pandas as pd
conn = pyodbc.connect('DSN=AWSDW')
Query = """select *
from <table_name>
limit 10"""
df2 = pd.read_sql(Query,conn)
但问题是我可以在 Redshift 中加载此数据框。下面是我正在尝试 运行:
的代码engine = sqlalchemy.create_engine('postgresql+pyodbc://AWSDW')
df2.to_sql('Abhi_Testing_Python_2'
,engine
,schema='sandbox'
,index=False
,if_exists = 'replace')
我知道在创建引擎的连接字符串中需要做一些事情。只是不知道是什么?
我愿意使用其他方法,只要我不必在代码中硬编码我的用户名和密码即可。
我发现您不能将 postgresql 方言与 pyodbc 驱动程序一起使用。
https://www.codepowered.com/manuals/SQLAlchemy-0.6.9-doc/html/core/engines.html
所以,我最终没有使用我安装的亚马逊驱动程序。改为使用 psycopg2。
connection_string = 'postgresql+psycopg2://'+username+':'+password+'@'+HOST+':'+str(PORT)+'/'+DATABASE
engine = create_engine(connection_string)
这行得通。唯一的缺点是我不得不在我的代码中硬编码主机名。