본문 바로가기
Backend/Python

[Python] Supabase 연결 오류

by 천우산__ 2024. 12. 31.

Supabase 프로젝트 생성, 데이터를 csv로 업로드 한 후

python으로 조회하기 위해 sqlalchemy 와 관련 패키지를 설치했다.

pip install sqlalchemy psycopg2-binary

 

.env 파일에 DB 정보를 입력 후 데이터 조회를 시도했는데

from dotenv import load_dotenv
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
import os
import psycopg2, traceback

load_dotenv()
user = os.environ["user"]
password = os.environ["password"]
host = os.environ["host"]
port = os.environ["port"]
dbname = os.environ["dbname"]

db = f"postgresql+psycopg2://{user}:{password}@{host}:{port}/{dbname}"

engine = create_engine(db)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

if __name__ == "__main__":
    try:
        with engine.connect() as connection:
            print("Connection successful!")
    
    except Exception as e:
        print(f"Failed to connect: {e}")
        traceback.print_exc()

아래 메세지가 나왔다. 

psycopg2.OperationalError

보통 이런 경우에는 DB 정보가 잘못 입력되어있는 경우, 정보 중 @ 같은 특수 문자들이 들어간 케이스에 해당되서

정보를 다시 확인, 이상이 없음을 확인했다.

 

supabase에서 ip 차단을 했는지 확인했는데, 모든 ip로 접속도 가능한 상황

어떤 문제 때문인지 한참을 찾았는데 설정을 잘 안 읽었던게 문제였다.

 

supabase에는 Direct connection 연결 방식과 Transaction pooler, Session pooler 연결 방식이 있는데

나는 Direct connection로 연결 시도했던 것이고, 이 방법은 IPv4로 연결이 안된다는 내용이 있었고

이 때문에 계속 오류가 났던 것

연결 방식을 Transaction pooler로 바꿔 연결 시도해보니 정상적으로 연결 되었다.

addon을 구입하면 가능하긴 한 듯

Dircet Connection 연결에 대한 설명