본문 바로가기
Python/왕초보를 위한 파이썬

13.3. 파이썬에서 MySQL 사용하기

by 가므자 2012. 4. 12.

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

댓글