이 튜토리얼에서는 Python에서 PostgreSQL 데이터베이스를 사용하는 방법을 단계별로 알아봅니다. 본격적인 실습에 앞서 필요한 환경 설정부터 차근차근 진행해 보겠습니다.
사전 준비 사항
먼저 PostgreSQL을 설치해야 합니다. 공식 문서의 설치 가이드를 참고해 운영체제에 맞게 설치하세요.
다음으로 Python에서 PostgreSQL에 접속하고 작업할 수 있도록 도와주는 모듈인 psycopg2를 설치합니다. 아래 명령어를 실행하면 됩니다.
pip install psycopg2
설치가 완료되면 pgAdmin을 실행해 실습용 샘플 데이터베이스를 생성합니다. 그다음 아래 단계를 따라 데이터베이스 작업을 시작할 수 있습니다.
데이터베이스 작업 기본 흐름
- psycopg2 모듈을 임포트합니다.
- 데이터베이스 이름, 사용자 이름, 비밀번호를 각각의 변수에 저장합니다.
- psycopg2.connect(database=..., user=..., password=...) 메서드로 데이터베이스에 연결합니다.
- SQL 명령을 실행할 커서(cursor) 객체를 생성합니다.
- 쿼리를 작성한 뒤 cursor.execute(query) 메서드로 실행합니다.
- 조회 결과가 있다면 cursor.fetchall() 메서드로 데이터를 가져옵니다.
- 모든 작업이 끝나면 반드시 connection.close() 메서드로 연결을 닫습니다.
예제 코드
# psycopg2 모듈 임포트
import psycopg2
# 데이터베이스 접속 정보 저장
database = 'testing'
user = 'postgres'
password = 'C&o%Z?bc'
# 데이터베이스 연결
connection = psycopg2.connect(database=database, user=user, password=password)
# 커서 객체 생성
cursor = connection.cursor()
# 테이블 생성 쿼리
create_table = "CREATE TABLE testing_members (id SERIAL PRIMARY KEY, name VARCHAR(25) NOT NULL)"
cursor.execute(create_table)
# 테이블에 삽입할 샘플 데이터
testing_members = ['Python', 'C', 'JavaScript', 'React', 'Django']
# 데이터 삽입 및 변경 사항 저장
for testing_member in testing_members:
populate_db = f"INSERT INTO testing_members (name) VALUES ('{testing_member}')"
cursor.execute(populate_db)
connection.commit()
# 전체 데이터 조회 쿼리
fetch_all = "SELECT * FROM testing_members"
cursor.execute(fetch_all)
# 모든 행 가져오기
rows = cursor.fetchall()
# 데이터 출력
for row in rows:
print(f"{row[0]} {row[1]}")
# 연결 종료
connection.close()참고: 더 안전한 쿼리 작성법
위 예제에서는 f-string으로 쿼리를 직접 만들었지만, 실무에서는 SQL 인젝션 공격을 방지하기 위해 파라미터화된 쿼리를 사용하는 것이 좋습니다. 예를 들어 cursor.execute("INSERT INTO testing_members (name) VALUES (%s)", (testing_member,))처럼 값을 인자로 전달하면 안전하게 처리됩니다.
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
1 Python 2 C 3 JavaScript 4 React 5 Django
마무리
지금까지 Python과 psycopg2를 활용해 PostgreSQL 데이터베이스에 연결하고, 테이블 생성부터 데이터 삽입과 조회까지 기본적인 작업 과정을 살펴봤습니다. 이 흐름만 익히면 실제 프로젝트에서도 데이터베이스를 손쉽게 다룰 수 있습니다. 튜토리얼 진행 중 궁금한 점이 있다면 댓글로 남겨주세요.