pymysql을 이용하여 db 연동하기
python에서 mysql 데이터베이스를 사용하기 위해 우선 python DB API 표준을 따르는 MySQL DB 모듈을 다운 받아 설치하다. MySQL DB 를 지원하는 Python 모듈은 여러 가지가 있는데, 여기서 pymysql 이라는 모듈을 사용해 본다. 참고로, 다른 MySQL 모듈을 사용하더라도 동일한 API를 사용하게 된다.
1. pymysql 설치하기
먼저, pymysql 라이브러리를 설치해줘야 한다.
pip을 이용하여 간단하게 설치해주자.
python3 -m pip install PyMySQL
2. db 연결하기
pymysql에 connect라는 함수를 이용하여 db 서버에 연결 할 수 있다.
1) PyMySql 모듈을 import 한다.
2) pymysql.connect() 메소드를 사용하여 MySQL에 connect 한다. 호스트명, 로그인, 암호, 접속할 DB 등을 파라미터로 지정한다.
import PyMySql
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
database='db',
cursorclass=pymysql.cursors.DictCursor)
3. sql문 작성하고 실행하기
3) Connection 객체로부터 cursor() 메서드를 호출하여 cursors 객체를 가져온다.
- cursor()를 생성하면 어떤 공간이 할당된다고 생각하면 쉽다.
- cursors라는 이름으로 공간을 할당해준 뒤 sql문을 execute 하면 sql문의 결과들이 cursors라는 공간으로 들어가게 된다.
4) cursors 객체의 execute() 매서드를 사용하여 SQL 문장을 DB 서버에 보낸다.
5) SQL 쿼리의 경우, cursors 객체의 fetchall(), fetchone(), fetchmany() 등의 메서드를 사용하여 데이터를 서버로부터 가져온 후, fetch 된 데이터를 사용한다.
- fetchone : 조회된 결과로부터 데이터 1개를 반환한다. 데이터가 없는 경우, None을 반환한다.
- fetchmany : 조회된 결과로부터 입력받은 size만큼의 데이터를 리스트 형태로 반환한다.
- fetchall : 조회된 결과 모두를 리스트형태로 반환한다. 데이터가 없는 경우, 빈 리스트를 반환한다.
# connect 에서 cursor 생성
cursors = connection.cursor()
# SQL문 실행
sql = "SELECT * FROM table_name WHERE id > 111"
cursors.execute(sql)
# data fetch
data = cursors.fetchall()
# connection 닫기
connection.close()
이렇게 db에 연결하여 데이터를 불러왔다면 마지막엔 close로 닫아야 한다.
나 같은 경우는 보통 DataFrame 형태로 불러와서 작업한다.
예로 들면 아래와 같다.
data = pd.DataFrame(data=cursors.fetchall(), columns=['column_1', 'column_2'])
출처1 : https://m.blog.naver.com/dudwo567890/130165627205
출처2 : http://pythonstudy.xyz/python/article/202-MySQL-%EC%BF%BC%EB%A6%AC