如何使用 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)

这行得通。唯一的缺点是我不得不在我的代码中硬编码主机名。