Python용 PostgreSQL 인터페이스 psycopg2
psycopg2는 Python에서 PostgreSQL을 다루기 위한 인터페이스 모듈이다. 즉, PostgreSQL 서버에 접속하거나 쿼리를 보내거나 데이터를 읽어 오는 등의 기능을 Python으로 하기 위한 모듈 중 하나이다. 이번에는 이 psycopg2 모듈을 간단히 소개한다.
설치하기
설치는 pip나 easy_install을 통해 쉽게 설치 할 수 있다.
가장 기본적으로 PostgreSQL에 연결하는 방법은 아래와 같다.
커서를 가져오면 SQL쿼리를 커서를 이용해 할 수 있다.
쿼리 내부에 특정 데이터를 넣을 경우 Python 자체의 문자열 포맺팅을 이용해 직접 SQL쿼리 문자열을 만들어 쓸 수도 있겠지만, execute에서 자체적으로 제공하는 방법을 이용하는 편이 속 편하다. 알아서 싱글 쿼터를 넣어 주고 문자열 이스케이프(Escape)도 자동으로 처리해 주기 때문이다.
psycopg2에서 사용하는 대치 심볼은
SELECT 쿼리를 한 경우 각 row를 읽을 때는 커서 자체를 엑세스 하면 된다.
만약 INSERT나 UPDATE/DELETE 등의 데이터를 변경하는 쿼리를 한 경우 커밋을 해 줘야 한다. 커밋은 연결 객체를 이용한다.
기본적인 사용은 이것만 알면 다 될 것 같다. :-)
설치하기
설치는 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()
기본적인 사용은 이것만 알면 다 될 것 같다. :-)
댓글