개요
PostgreSQL은 기본적으로 5432번 포트에서 동작하도록 설치됩니다. 파이썬에서 PostgreSQL 데이터베이스에 접속하려면 psycopg2 모듈이 필요합니다. 아직 설치하지 않았다면 pip 명령어로 간단히 설치할 수 있습니다.
pip install psycopg2
이 글에서는 fname(이름), sname(성), age(나이), gender(성별), salary(급여) 필드로 구성된 employee 테이블과 test 데이터베이스가 이미 준비되어 있다고 가정합니다.
1단계: 데이터베이스 연결 및 커서 생성
먼저 파이썬 스크립트에서 다음과 같이 데이터베이스에 연결하고 커서(cursor) 객체를 얻습니다.
import psycopg2
conn = psycopg2.connect(
database="test",
user="postgres",
password="pass123",
host="localhost",
port="5432"
)
cur = conn.cursor()
2단계: 삽입할 데이터를 튜플로 준비
employee 테이블에 삽입할 데이터는 튜플(tuple) 객체 형태로 저장합니다.
t1 = ('Mac', 'Mohan', 20, 'M', 2000)
3단계: INSERT 쿼리 작성
준비한 튜플을 이용해 INSERT 쿼리 문자열을 만듭니다.
sql = "insert into employee values(%s,%s,%d,%s,%d)" % t1
참고로 실무 환경에서는 SQL 인젝션 공격을 방지하기 위해 % 포매팅 대신 매개변수화된 쿼리(parameterized query)를 사용하는 것이 안전합니다.
sql = "insert into employee values(%s,%s,%s,%s,%s)"
cur.execute(sql, t1)
4단계: 쿼리 실행 및 변경 사항 저장
커서 객체의 execute() 메서드로 쿼리를 실행합니다.
cur.execute(sql)
INSERT 문 실행 후에는 반드시 commit()을 호출해야 변경 사항이 데이터베이스에 실제로 반영됩니다.
conn.commit()
실행 결과 확인
위 과정을 마치면 employee 테이블에 새로운 레코드가 추가된 것을 확인할 수 있습니다. 작업이 끝난 후에는 커서와 연결을 닫아 리소스를 해제하는 것이 좋습니다.
cur.close()
conn.close()