본문 바로가기
Database

MySQL - pandas & pymysql 라이브러리

by DGK 2021. 11. 10.

 

데이터베이스 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

pandas, pymysql 라이브러리

pandas 라이브러리의 많은 기능 중 일부를 연습해보고자 한다.

 

read_sql()

pandas 라이브러리의 다양한 기능 중, read_sql() 함수를 사용하면 SQL 코드의 결과를 바로 확인할 수 있다.

 

import pymysql
import pandas as pd

host_name = 'localhost'
host_port = 3306
username = 'root'
password = 'mysql pw'
database_name = 'student_mgmt'

db = pymysql.connect(
    host=host_name,     # MySQL Server Address
    port=host_port,     # MySQL Server Port
    user=username,      # MySQL username
    passwd=password,    # password for MySQL username
    db=database_name,   # Database name
    charset='utf8'
)

SQL = "SHOW TABLES"
df = pd.read_sql(SQL, db)
df

 

```

결과 :

```

 

SQL = 'SELECT * FROM students'
df = pd.read_sql(SQL, db)
df

 

```

결과 :

```

 

이처럼 pandas 라이브러리의 read_sql() 함수를 사용하면, terminal 또는 Workbench 없이도 파이썬 코드를 통해

SQL의 결과를 바로 확인할 수 있다. (단, 위의 결과는 주피터노트북에서 실행한 결과이다.)

 

참고로 pandas 라이브러리의 read_sql() 함수는 첫 번째 인자로 SQL 쿼리를 받고, 두 번째 인자로 db connection

객체를 받는다.

 

to_csv()

pandas 라이브러리의 다양한 기능 중, to_csv() 함수를 사용하면 데이터 검색의 결과를 파일(csv file)로 저장할 수 있다.

 

import pymysql
import pandas as pd

host_name = 'localhost'
host_port = 3306
username = 'root'
password = 'mysql pw'
database_name = 'student_mgmt'

db = pymysql.connect(
    host=host_name,     # MySQL Server Address
    port=host_port,     # MySQL Server Port
    user=username,      # MySQL username
    passwd=password,    # password for MySQL username
    db=database_name,   # Database name
    charset='utf8'
)

SQL = "SELECT * FROM students"
df = pd.read_sql(SQL, db)
df.to_csv('students.csv', sep=',', index=False, encoding='utf-8')

 

```

결과 :

csv file

```

 

pandas 라이브러리의 to_csv() 함수 인자로 index = False를 넣어주면, csv 파일에 들어가는 데이터에 인덱스 번호가

생략된다.

 

*참고

 

1. csv 파일의 포멧은 데이터 간 콤마(,)로 구분해서 표시하는 단순 형식을 가지고 있다.

2. csv 파일의 포멧은 엑셀 프로그램에서도 읽고 쓸 수 있으며, IT 분야에서 많이 활용된다.

 

 

'Database' 카테고리의 다른 글

MySQL - 실전 크롤링과 데이터베이스  (2) 2021.11.11
MySQL - Foreign Key  (0) 2021.11.11
MySQL - 파일로 실행하는 SQL  (0) 2021.11.10
MySQL - 파이썬으로 다루는 MySQL  (0) 2021.11.10
MySQL - SQL 기초 문법(2)  (0) 2021.11.06

댓글