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 활성화