[python] MySQL 연결

2014. 9. 5. 13:00 from Dev/python

어제 python 관련 글 올린 김에 많은 분들이 찾으시는 MySQL 데이터베이스 이용과 관련된 내용을 정리해드립니다.

예전에 제가 프로그래밍으로 밥 벌어먹기 시작했을 때(!)에는 여러가지 DBMS가 많았습니다만, 이제는 LAMP니 뭐니 할 정도로 MySQL이 정석이 되었습니다. 실제로 제가 있었던 회사는 MySQL로 회원 수 천만이 넘는 사이트를 무리 없이 운영하니까요. 옛날에는 MySQL로 그 정도 규모의 상업적인 서비스를 한다 그러면 주위에서는 그거로 돌리면 불안해서 밤에 잠이 오겠냐, M$나 오라클 써라 했었는데요. ㅋㅋ

다 오픈소스의 힘이라고 생각합니다. 그만큼 보완이 많이 되고, 서비스를 하면서 경험이 축적되면서 개선이 되니까요. 개인적으로는 MongoDB로 개발을 하고 있는 부분이 있는데 Mongo가 더 재미있긴 하지만요.

각설하고, python에서 MySQL 이용하는 것과 관련해서 간단하게 정리해 보겠습니다.

많이 이용되고 있는 모듈은 

_mysql, MySQLdb

입니다.

_mysql은 C API를 이용하는 raw-level 모듈이고, MySQLdb는 _mysql 모듈을 포장한 wrapper입니다. 

연결은 

con = MySQLdb.connect('localhost', 'testuser', 'mypassword', 'mydbname')


이런 식으로 해주시면 되고, 연결 후에는 cursor를 생성하여 이용하시면 됩니다.

간단하게 예를 들어보면 아래와 같습니다:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb as mdb
import sys

try:
    con = mdb.connect('localhost', 'dbuser', 'mypassword', 'mydb')
    
    cur = con.cursor()
    sql = "SELECT ID FROM articles ORDER BY ID DESC LIMIT 10"
    cur.execute(sql)
    for i in range(cur.rowcount):
        row = cur.fetchone()
        print row[0]

except mdb.Error, e:
    print "Error %d: %s" % (e.args[0], e.args[1])
    sys.exit(1)


python의 dictionary type cursor를 이용하시려면 cursor 생성시에 다음과 같이 하시면 됩니다.

cur = con.cursor(mdb.cursors.DictCursor)


(Update) MySQLdb module 설치는 다음 포스팅을 참조하세요:

http://banasun.tistory.com/entry/MySQLpython-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-Ubuntu

Posted by banasun :