python에서 AWS Redshift 데이터베이스에 연결할 시스템을 설정 중입니다. isql을 통해 연결할 수 있기 때문에 python 스크립트에 문제가 있다고 생각합니다. 나는 모든 관련 패키지를 설치 한, 다음과 같이 나는 isql을 통해 연결할 수 있어요 :하지만, 내 파이썬 스크립트는 연결 실패pyodbc - [unixODBC] [드라이버 관리자] 데이터 소스 이름을 찾을 수없고 기본 드라이버가 지정되지 않았습니다.
$ isql rndredshift readonly ***** -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> quit
.
===========
Uid=readonly;Database=prod;ServerName=rndredshift;Driver={PostgreSQL}; Server=10.191.4.97;Pwd=********;Port=5439
===========
Traceback (most recent call last):
File "test_redshift.py", line 24, in <module>
sys.exit(main())
File "test_redshift.py", line 17, in main
new_conn2 = pyodbc.connect(redshift_conn_str)
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnectW)')
PosgreSQL 드라이버가 설치됩니다 : 여기
import pyodbc
import sys
def main():
redshift_conn_str = assemble_connection_string(
Driver='{PostgreSQL}',
Server='10.191.4.97',
ServerName='rndredshift',
Port='5439',
Database='prod',
Uid='readonly',
Pwd='*******'
)
print("===========")
print(redshift_conn_str)
print("===========")
new_conn2 = pyodbc.connect(redshift_conn_str)
print(psql.read_sql('select top 10 * from rawdb.raw_imprequest_20150101', new_conn2))
def assemble_connection_string(**kwargs):
return ';'.join([k + '=' + v for (k, v) in kwargs.items()])
if __name__ == '__main__':
sys.exit(main())
출력 것 :
$ odbcinst -q -d
[PostgreSQL]
[MySQL]
그리고 데이터 소스가 구성되어
$ odbcinst -q -s
[rndredshift]