[파이썬] Psycopg2에서 Parameterized 쿼리

파라미터화된 쿼리는 쿼리 문자열에서 동적으로 생성된 값을 대체하기 위해 %s와 같은 플레이스홀더를 사용합니다. 이를 통해 사용자 입력과 같은 외부 데이터를 안전하게 처리할 수 있습니다.

아래는 Psycopg2를 사용하여 파라미터화된 쿼리를 실행하는 간단한 예제입니다.

import psycopg2

# 데이터베이스 연결
conn = psycopg2.connect(database="mydatabase", user="myuser", password="mypassword", host="localhost", port="5432")

# 커서 생성
cur = conn.cursor()

# 파라미터화된 쿼리 실행
param1 = "John"
param2 = 25
cur.execute("SELECT * FROM users WHERE name = %s AND age = %s", (param1, param2))

# 결과 검색
rows = cur.fetchall()
for row in rows:
    print(row)

# 연결 종료
conn.close()

위의 예제에서, %s 플레이스홀더는 쿼리 문자열에 사용되었습니다. 뒤에 튜플로 제공된 변수들이 플레이스홀더에 대체됩니다. 이를 통해 쿼리에 대체할 값들을 지정할 수 있습니다.

파라미터화된 쿼리를 사용하면 문자열 조합이나 자체적인 값을 사용하여 쿼리를 생성하는 것보다 더욱 안전하고 간단한 방법을 제공합니다. 이를 통해 프로그램의 보안을 강화하고 SQL 인젝션과 같은 공격을 방지할 수 있습니다. 또한, 파라미터화된 쿼리는 데이터베이스 엔진에 쿼리 실행 계획을 미리 전달하므로 성능을 향상시킬 수도 있습니다.

따라서 파라미터화된 쿼리를 사용하여 psycopg2를 통해 쿼리를 실행하는 것을 강력히 추천합니다. 이는 데이터베이스 연결과 쿼리 실행에 있어 안전성과 성능을 보장해주는 좋은 프랙티스입니다.