Keycloak Postgres sql 연동 psycopg2

김민주·2025년 6월 9일

pip3 --version

pip3 install pandas psycopg2

Docker Compose에서 포트 개방 추가

postgres:
  ports:
    - "5432:5432"

pandas.read_sql()은 내부적으로 SQLAlchemy의 Connection 또는 Engine 객체를 사용하는 것이 표준 방식임

항목psycopg2.connect()create_engine() (SQLAlchemy)
레벨저수준 (DBAPI2)고수준 (SQLAlchemy)
연결 객체connection, cursor 직접 제어engine, connection
커서 제어✅ 직접 커서로 execute() / fetchall()❌ 일반 사용자는 잘 안 씀
pandas read_sql() 호환성가능은 하지만 경고 발생✅ 완벽 호환, 권장 방식
커넥션 풀❌ 없음 (직접 구현 필요)✅ 기본 내장
트랜잭션 제어수동 커밋 필요 (conn.commit())자동 커밋 또는 세션 기반 처리 가능
ORM 연동❌ 불가능✅ SQLAlchemy ORM과 바로 연동 가능
다중 DB 호환❌ PostgreSQL 전용✅ PostgreSQL, MySQL, SQLite 등 다중 지원
확장성/재사용성한 번 연결 → 재사용 어려움커넥션 풀 기반 → 확장성 뛰어남
사용 목적단순 쿼리, 스크립트, 수작업 제어데이터 분석, ETL, ORM 기반 웹앱 등

pip3 install sqlalchemy psycopg2

from sqlalchemy import create_engine
import pandas as pd

# SQLAlchemy 스타일 DB URI (user:password@host:port/database)
db_uri = "postgresql+psycopg2://keycloak:1234@localhost:5432/keycloak_db"

conn = psycopg2.connect(
    host='rds-an2-dop-stg-pos-keycloak.cczd76rnzmpf.ap-northeast-2.rds.amazonaws.com',
    port='5432',
    user='keycloak',
    password='# TODO rds db 비번 시크릿에서 ',
    dbname='keycloak'
)
cur = conn.cursor()


# Engine 생성
engine = create_engine(db_uri)

# SQL 실행
df = pd.read_sql(query, engine)

docker exec -it pg psql -U keycloak -d keycloak_db
pg테이블 접근해서 data 잘 쌓이고 있는지 선 확인 필요.

user events와 admin events 활성화

profile
𝐃𝐨𝐧'𝐭 𝐛𝐞 𝐚 𝐩𝐫𝐨𝐜𝐫𝐚𝐬𝐭𝐢𝐧𝐚𝐭𝐨𝐫💫

0개의 댓글