我对Python编程比较陌生。我已经彻底地搜索了之前回答的与此相关的问题,但找不到一个好的解决方案。
问题:我打算使用系统中安装的ODBC驱动程序来连接Red-shift数据库。在DSN中配置所有实体(服务器名称、主机、端口、用户名和密码)。我成功地建立了到数据库的连接,并使用以下代码读取表:
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')
我知道在create engine的连接字符串中需要做一些事情。但不知道是什么?
我对使用其他方法持开放态度,只要我不需要在代码中硬编码我的用户名和密码。
发布于 2018-07-28 04:07:26
我发现你不能在pyodbc驱动中使用postgresql方言。
https://www.codepowered.com/manuals/SQLAlchemy-0.6.9-doc/html/core/engines.html
因此,我最终没有使用我安装的Amazon驱动程序。改为使用psycopg2。
connection_string = 'postgresql+psycopg2://'+username+':'+password+'@'+HOST+':'+str(PORT)+'/'+DATABASE
engine = create_engine(connection_string)
这是可行的。唯一的缺点是我不得不在我的代码中硬编码主机名。
https://stackoverflow.com/questions/51445082
复制相似问题