-
파이썬에서 psycopg2 사용하지 않고 Redshift 연결하는 법 (feat. Error: pg_config executable not found)Tips 2022. 7. 26. 00:50728x90반응형
Python에서 Postgresql 데이터베이스를 사용하려면 psycopgy2라이브러리를 사용해야한다. Redshift역시 postgresql 기반이므로 psycopg2를 많이 사용한다.
Psycopg2 설치하면서 pg_config 에러는 한번씩은 다 마주쳐봤을 것이다. 보통 이 에러는 psycopgy-binary를 설치하여 해결할 수 있는데, 맥북 m1칩 + Big Sur이상이거나 python 3.6~3.9이외의 버전에서는 psycopg2-binary 설치시에도 동일한 에러가 뜬다는 것이다.
해결방법은 다음과 같이 여러가지가 있다 (에러메세지 길이에 비해 생각보다 간단해서 화남)
- Postgresql을 설치해준다
$brew install postgresql
- Python 3.6 ~ 3.9 사이로 버전을 맞춰준다
- psycopg2 라이브러리 대신 redshift data api를 사용한다 (공식문서)
- psycopg2 라이브러리 대신 redshift_connector를 사용한다.
나는 파이썬 버전 문제는 아니었고 m1칩 문제였으며 DA분들이 python에서 redshift에 있는 데이터를 pandas dataframe으로 쉽게 불러오기 위한 패키지를 만드는 과정에서 해당 에러를 마주쳤는데, DA분들 컴퓨터에 굳이 postgresql을 설치할 필요성을 못 느꼈고, redshift data api는 사용하기 복잡할 거라는 판단에 redshift_connector를 사용하기로 했다.
사용법은 PEP249를 따랐기때문에 여느 DB API 사용법과같다. 다음 코드를 참조하거나 Redshift 연결해서 dataframe만든 full code를 보고싶다면 github을 참고하면 된다 (이미 배포되어 있으므로 pip install red2df로 패키지를 사용할 수도 있다)
$pip install redshift_connector
import redshift_connector database = '데이터베이스 이름 (e.g. dev)' user = 'username' password = 'password' host = 'redshift url' port = 'redshift port number' conn = redshift_connector.connect( database=database ,user = user ,password = password ,host=host ,port=port ) cursor = conn.cursor() sql = '날리려는 SQL 구문' cursor.execute(sql) print(cursor.fetchall()) #SQL 결과값 출력
728x90반응형'Tips' 카테고리의 다른 글
DependencyViolation: Network vpc-xxx has some mapped public address(es). Please unmap those public address(es) before detaching the gateway 에러 (0) 2022.12.03 파이썬 round 함수의 오류 (2.5가 2가되는 마법 - 사사오입과 오사오입) (0) 2022.09.30 파이썬 패키지 만들어서 Pypi에 배포하기 (+ README.md 홈 화면에 띄우기) (0) 2022.07.25 Redshift에 CSV 데이터로 테이블 만들기 (0) 2022.06.25 Github 커밋 하나로 합치기 (전체, 선택) (0) 2022.06.20