본문 바로가기
SW 프로그래밍/파이썬

파이썬에서 MySQL 데이터 가지고 오기

by N2info 2019. 12. 4.

파이썬에서 MySQL 데이터를 갖고 오기는 의외로 간단하다(3.5기준)

일단 mysql을 임포트 한다.

만약 에러가 나온다면 모듈이 설치가 안된것이므로 pip로 설치하면 된다.(pip install pymysql)

그 다음 Connection을 선언하여 연결한다.

그 다음 Connection으로부터 Cursor를 생성한다.

SQL 문을 작성한다.(SQL프로그램에서 확인해보고 되면 입력하자)

SQL을 실행한다.

실행결과를 가져온다. 이떄 가져온 값은 기본적으로 리스트형이다.

실행결과를 리스트로 저장하는 부분은 "curs.fetchall()" 부분이다. 칼럼 1개를 조회해도 1줄이 출력된다.

1칸을 출력하려면 sd_ed[0][0] 식으로 표현해야 한다. sd_ed[0] 식으로 표현하면 1줄이 출력된다.

가끔 리스트의 첫번쨰와 마지막을 가지과와야 할 경우에는

첫번째 요소는 sd_ed[0][0]

마지막 요소는 sd_ed[-1][0]으로 표현하면 된다.

import pymysql

# MySQL Connection 연결
conn = pymysql.connect(host='127.0.0.1', user='root', password='root', db='db', charset='utf8')

# Connection 으로부터 Cursor 생성
curs = conn.cursor()

#테이블data에 저장된 값중 등록일인 rdata값을 YYYY-MM-DD형식으로 읽어서 중복값을 제외하고 읽어옴
sql_db_date_range = "SELECT DATE_FORMAT(rdate, '%Y-%m-%d') FROM data GROUP BY DATE_FORMAT(rdate, '%Y-%m-%d') HAVING COUNT(*) >1;"
curs.execute(sql_db_date_range)
sd_ed = curs.fetchall()

for i in range(len(sd_ed)):
    print(sd_ed[i][0])  #  2019-06-10  출력(한칸 출력)
    print(sd_ed[i])     #  ('2019-06-10',)  출력(한줄(low) 출력)

print("--------------------------------------------------------")      
print("계산 일자:", sd_ed[0][0], "~", sd_ed[-1][0])
print("--------------------------------------------------------")