프로그래밍/Python
Python 공부 노트 4. - 초간단 RDBMS 프로그래밍
Terry Cho
2013. 1. 14. 23:33
RDBMS 프로그래밍시에는 해당 RDBMS에 대한 드라이버(모듈을) import해야 한다. sqlite의 경우는 이미 들어가 있다. 아래는 가장 기본적인 코드 이다.
import sqlite3
conn = sqlite3.connect("datafile")
cursor = conn.cursor()
cursor.execute("drop table test")
cursor.execute("create table test (name text,count integer)")
cursor.execute("insert into test(name,count) values('Terry',1)")
cursor.execute("insert into test(name,count) values('Cath',2)")
conn.commit()
result = cursor.execute("select * from test")
while True:
row = result.fetchone()
if row == None:
break
print row[0],row[1]
conn.close()
데이타 베이스 프로그래밍 순서
- 먼저 import를 통해서, 해당 데이타베이스를 접근하기 위한 모듈을 import한다.
- 해당 모듈.connect를 이용하여 데이타 베이스 connection을 연결한다. dbms에 따라서 connection string이 다르다. sqlite의 경우 파일 기반이기 때문에, 파일경로만 지정하면 되고, mysql의 경우에는 host,userid,userpasswd,dbms 식으로 기술해주면 된다.
- 다음은 cursor를 connection으로 부터 생성한다.
- cursor.execute를 통해서 query를 실행한다.
- select의 경우에는 result를 받은후에
- - fetchall()의 경우 결과를 모두 리턴
- - fetchone()의 경우 하나의 row를 리턴
- - fetchmany(num rows)의 경우 rows의 숫자 만큼 리턴을 한다.
- conn.commit을 이용하여 transaction을 commit한다.
- 마지막으로 사용한 connection을 close한다.
mysql 데이타베이스도 다르지 않다. (정말 쉽다.)
다음은 약간 더 진보된 코드로, 데이타베이스에 대한 에러 핸들링을 포함하고 있다.
import sqlite3try:conn = sqlite3.connect("datafile")cursor = conn.cursor()cursor.execute("drop table test")cursor.execute("create table test (name text,count integer)")cursor.execute("insert into test(name,count) values('Terry',1)")cursor.execute("insert into test(name,count) values('Cath',2)")conn.commit()result = cursor.execute("select * from test")while True:row = result.fetchone()if row == None:breakprint row[0],row[1]except sqlite3.Error, e:if conn:conn.rollbackfinally:if conn:conn.close()
기본적으로 sqlite 라이브러리가 포함되어 있는게 마음에 든다. 간단한 tutorial이나, 간단한 dbms 프로그래밍의 경우 별도의 라이브러리 설치가 필요없다.