2012년 6월 14일 목요일

Python용 PostgreSQL 인터페이스 psycopg2

psycopg2는 Python에서 PostgreSQL을 다루기 위한 인터페이스 모듈이다. 즉, PostgreSQL 서버에 접속하거나 쿼리를 보내거나 데이터를 읽어 오는 등의 기능을 Python으로 하기 위한 모듈 중 하나이다. 이번에는 이 psycopg2 모듈을 간단히 소개한다.


설치하기

설치는 pip나 easy_install을 통해 쉽게 설치 할 수 있다.
sudo pip install psycopg2


연결하기

가장 기본적으로 PostgreSQL에 연결하는 방법은 아래와 같다.
import psycopg2
connection = psycopg2.connect(dbname='DBNAME', user='USERNAME', password='PASSWORD)
connect 시에는 인자를 문자열로 통채로 넘겨 줄 수도 있다.
connection = psycopg2.connect("dbname=DBNAME user=USERNAME password=PASSWORD")
연결이 되었으면 커서를 가져온다. 커서는 쿼리를 하기 위한 객체이니 꼭 필요하다.
cursor = connection.cursor()


SQL 쿼리하기

커서를 가져오면 SQL쿼리를 커서를 이용해 할 수 있다.
cursor.execute("SELECT * FROM sometable")

쿼리 내부에 특정 데이터를 넣을 경우 Python 자체의 문자열 포맺팅을 이용해 직접 SQL쿼리 문자열을 만들어 쓸 수도 있겠지만, execute에서 자체적으로 제공하는 방법을 이용하는 편이 속 편하다. 알아서 싱글 쿼터를 넣어 주고 문자열 이스케이프(Escape)도 자동으로 처리해 주기 때문이다.
cursor.execute("SELECT id, name FROM sometable WHERE value1=%s AND value2=%s",       
               (value1, value2))

psycopg2에서 사용하는 대치 심볼은 %s가 전부이다. %d 혹은 %f 등등 타입에 종속된 형식은 지원하지 않고 오히려 알아서 타입에 맞게 변환해 준다. 편하다.


SQL 쿼리 결과 읽기

SELECT 쿼리를 한 경우 각 row를 읽을 때는 커서 자체를 엑세스 하면 된다.
for row in cursor:
    record1, record2 = row
    ...


변경사항 적용(커밋)

만약 INSERT나 UPDATE/DELETE 등의 데이터를 변경하는 쿼리를 한 경우 커밋을 해 줘야 한다. 커밋은 연결 객체를 이용한다.
connection.commit()


기본적인 사용은 이것만 알면 다 될 것 같다. :-)

댓글 없음 :