SQL로 데이터베이스를 다루는 것에 조금 익숙해지셨으면, 파이썬에서 데이터베이스를 사용하는 방법을 알아보도록 하시지요.
MySQLdb 모듈 설치
파이썬에서 어떤 DBMS를 다루기 위해서는 둘 사이를 이어줄 징검다리가 필요하답니다. 이런 것을 데이터베이스 모듈이라고하는데, http://python.org/topics/database/modules.html에 가시면 종류별로 잘 정리되어 있지요.
데이터베이스는 종류도 많고, 각각의 특징이 있기 때문에 어떤 데이터베이스를 선택하느냐에 따라서 프로그래머가 처리해주어야할 내용도 달라지게 되는데, 다행히 파이썬에서는 서로 다른 데이터베이스를 위한 모듈끼리도 사용방법이 같다고 하는군요.
http://www.codegood.com/archives/129 설치
MySQLdb 사용법
설치가 잘 되었으면 파이썬 인터프리터를 띄워서 MySQLdb를 써보도록 합시다.
>>> import MySQLdb
이렇게 MySQLdb 모듈을 불러들인 다음, 서버에 접속하면서 friends 데이터베이스를 열어줍니다.
>>> db = MySQLdb.connect(db='friends')
SQL 문을 실행시키기고 결과를 얻어올 때 사용할 커서(cursor)를 만듭니다.
>>> cur = db.cursor()
이제 SQL 문을 실행(execute)시켜봅시다.
>>> cur.execute("SELECT * FROM friends") 3L
fetchone()
SELECT 문을 실행한 결과가 3줄이 있다는 뜻으로 3L이라는 값을 돌려주는군요. 그 중에서 한 줄을 읽어볼까요?
>>> cur.fetchone() ('\xc8\xc4\xb4\xcf', '\xbf\xec\xb8\xae \xbf\xb7\xc1\xfd', 'huni@abc.net', '119', '016-123-4567')
fetchone()을 써서 한 줄을 읽어보았습니다.
다음 줄도 읽어봅시다. 한 줄을 읽고 나면 커서가 다음 줄을 가리키고 있으므로 또 fetchone()을 해주면 됩니다.
>>> cur.fetchone() ('\xbc\xf6\xc6\xdb\xb8\xc7', None, 'whittny@air.com', '1588-5588', '019-111-2222')
그럼 또 한 줄 더…
>>> for field in cur.fetchone(): ... print field ... 만득이 먹구대학교 떡볶이과 heo@mail.com 041-234-5678 None
print 문을 썼더니 한글이 잘 나오는군요.
이제 3줄을 다 읽어보았으니 fetchone()을 해도 더 이상 볼 것이 없습니다.
>>> cur.fetchone() >>>
fetchall()과 fetchmany()
한 줄 씩 읽어오기 귀찮으시다면 fetchall()로 한 번에 읽어오셔도 됩니다.
>>> cur.execute("SELECT * FROM friends") 3L >>> cur.fetchall() (('\xc8\xc4\xb4\xcf', '\xbf\xec\xb8\xae \xbf\xb7\xc1\xfd', 'huni@abc.net', '119', '016-123-4567'), ('\xbc\xf6\xc6\xdb\xb8\xc7', None, 'whittny@air.com', '1588-5588', '019-111-2222'), ('\xb8\xb8\xb5\xe6\xc0\xcc', '\xb8\xd4\xb1\xb8\xb4\xeb\xc7\xd0\xb1\xb3 \xb6\xb1\xba\xba\xc0\xcc\xb0\xfa', 'heo@mail.com', '041-234-5678', None))
한글을 보고 싶으시면 다음과 같이 하면 되겠죠?
한번 더 해보세요. fetchall()은 여러 번 해도 상관 없으니까요.
>>> for rec in cur.fetchall(): ... for f in rec: ... print f ... print ...
fetchall()과 비슷한 것으로 fetchmany()라는 것도 있습니다. 읽고 싶은 줄 수를 괄호 안에 써주면 딱 그만큼만 읽어오지요.
fetchall()을 실행하고 나면 커서가 마지막으로 가 있을 테니 다시 SELECT 문을 실행시킨 다음에 써보세요.
SQL 문이 복잡하다 싶으면 다음과 같이 따옴표 SQL 문을 문자열로 저장해둔 다음에 실행시키면 편리하답니다.
>>> sql = """ ... INSERT INTO friends ... VALUES ('오리꽉', '서산 농장', 'ori@mail.net', '111-2222', '017-555-6666') ... """ >>> cur.execute(sql) 1L
잘 들어갔는지 확인해보세요~
출처 : wikidocs 왕초보를 위한 파이썬
'Python > 왕초보를 위한 파이썬' 카테고리의 다른 글
11.1. 웹에서 정보 얻기 (0) | 2012.04.12 |
---|---|
11. 네트워크 (0) | 2012.04.12 |
10.1. DIR 흉내내기 (0) | 2012.04.12 |
10. 시스템 (0) | 2012.04.12 |
9.1. Tkinter에서 마우스 이벤트 처리 (0) | 2012.04.12 |
댓글