파이썬 psycopg2의 핵심, cursor와 mogrify 제대로 이해하기

Sue·2025년 6월 10일
0
post-thumbnail

🧭 1. cursor란 무엇인가?

cursor는 데이터베이스 연결을 통해 SQL 문장을 실행하고 결과를 가져오는 작업 단위입니다.

import psycopg2

conn = psycopg2.connect("dbname=test user=postgres password=secret")
cur = conn.cursor()
cur.execute("SELECT * FROM users;")
rows = cur.fetchall()

위 코드에서 cur이 바로 cursor 객체입니다.

주요 역할

  • SQL 문 실행: cursor.execute(...)
  • 결과 조회: cursor.fetchone(), cursor.fetchall()
  • 트랜잭션 컨트롤: commit, rollback은 connection 객체에서

🛠 2. cursor.mogrify는 무엇인가?

mogrify는 SQL 구문을 실행하지 않고, 실행 직전에 DB에 전달될 SQL문을 문자열 형태로 보여주는 메서드입니다.

즉, SQL 구문을 안전하게 문자열로 변환해주는 디버깅용 도구입니다.

사용 예시

query = "INSERT INTO users (name, age) VALUES (%s, %s)"
params = ("Alice", 30)
print(cur.mogrify(query, params))

출력:

b"INSERT INTO users (name, age) VALUES ('Alice', 30)"

언제 유용한가?

  • SQL injection 방지 확인: 파라미터가 제대로 escaping 되었는지 점검 가능
  • 로그 기록: 실제 실행될 SQL을 로그에 남기고 싶을 때

⚠️ mogrify의 주의사항

  • b""로 감싸진 결과는 바이트 문자열입니다. 필요하면 .decode()로 문자열로 변환해야 함
  • 실제 실행은 안 되므로, 결과만 보고 싶을 때만 사용

요약

항목설명
cursorSQL 실행 및 결과 조회를 위한 객체
cursor.execute(...)SQL을 실제로 실행함
cursor.mogrify(...)SQL을 실행하지 않고, 실행될 SQL을 문자열로 보여줌
profile
AI/ML Engineer

0개의 댓글