[Python] 파이썬 데이터베이스(DB), mysql 연동
업데이트:
파이썬 데이터베이스(DB), mysql 연동
참고 링크
import pymysql
import prestodb
import pyhive
import MySQLdb
위 라이브러리 중 어떤 라이브러리를 사용하더라도 사용법의 큰 차이는 없는 것으로 보인다. 파이썬으로 DB에 연동해서 데이터를 가져오는 순서는 아래와 같다.
- 데이터베이스 연결(conn)
- 커서(cursor) 생성
- SQL문 실행(execute)
- 데이터 가져오기(fetchall)
- 연결 끊기(close)
1. 데이터베이스 연결
conn = pymysql.connect(host='localhost', user='root',
password='1234', db='namedb', charset='utf8')
2. 커서(cursor) 생성
2-1. 커서(cursor)란?
커서 생성 이전에, 데이터베이스에서 커서란 무엇인지 알아보자.
일반적으로 데이터베이스는 같은 종류의 데이터를 많이 축적하고 있으며, 이용지가 요청하는 데이터는 1건 또는 여러건이 될 수 있다. 이런 경우 커서를 사용하여 다음과 같이 반복자의 요령으로 실현할 수 있다.
- 이용자는 검색 및 정렬 순서를 지정하여 커서를 정의한다.
- 매개 변수를 사용하는 경우 값을 결정하고 데이터 액세스를 시작한다.
- 커서 위치의 데이터를 검색한다. 검색 결과의 끝이라면 7.
- 필요에 따라 커서 위치의 데이터를 변경, 삭제한다.
- 커서를 ‘다음 데이터’로 진행한다.
- 3 반복
- 반복 종료 후 커서를 풀어 놓는다.
2-2. 커서(cursor) 사용
curs = conn.cursor()
3. SQL문 실행
sql = "select * from table_A"
curs.execute(sql)
4. 데이터 가져오기
data = curs.fetchall()
data[0] #첫번째 row
data[1] #두번째 row
5. 연결 끊기
conn.close()
6. 라이브러리간 미묘한 차이
import MySQLdb
conn = MySQLdb.connect(host='10.100.100.4', port=3306, user='dbid', passwd='pw', db='dbname', charset='utf8')
import mysql.connector
conn = mysql.connector.connect(host='10.100.100.4', port='3306', user='dbid', password='pw', database='dbname', charset='utf8')
사용법의 미묘한 차이가 보이는가. 기본적으로 라이브러리간 옵션 값이 조금씩 다르며, port의 경우 MySQLdb에서는 정수(int)값을 넣지만, mysql.connector에서는 문자(string)값을 넣는다.