Python

[Python] PyMySQL/Pandas를 이용해 SELECT 하기

비번변경 2022. 11. 6. 22:00

개요

2022.11.05 - [Python] PyMySQL - MySQL SELECT 하기에서 PyMySQL 라이브러리를 사용해 Python으로 MySQL을 다뤄보았다. PyMySQL만을 사용하면 매번 커서를 생성하는 등의 작업이 필요한데 Pandas를 사용하면 조금 더 편하게 MySQL을 다룰 수 있다.

 

이 글에서는 PyMySQL와 Pandas를 사용해 SELECT문을 실행하는 방법을 정리한다.

 

 

MySQL 연결

PyMySQL을 이용하여 MySQL와 연결한다.

import pymysql

conn = pymysql.connect(host='DB_SERVER_IP', port='PORT'
                       user='USERNAME', password='PASSWORD',
                       db='DATABASE_NAME', charset='CHARSET')

 

 

SQL 실행

Pandas를 이용해 DB에서 데이터를 읽을 때는 read_sql_query, read_sql_table, read_sql과 같은 함수를 사용할 수 있다.

  • read_sql_query(sql, con) : 쿼리 실행 결과를 DataFrame으로 반환한다.
  • read_sql_table(table_name, con) : 테이블을 DataFrame으로 반환한다.
  • read_sql(sql, con) : read_sql_query, read_sql_table을 편하게 사용하기 위한 wrapper로, 쿼리 실행 결과 또는 테이블을 DataFrame으로 반환한다. 매개변수로 SQL을 전달받으면 read_sql_query가, 테이블 이름을 전달받으면 read_sql_table이 실행된다.

세 함수 모두 두 번째 매개변수로는 connection을 전달받으며, 전달받은 connection 객체를 이용해 mysql에 접근한다.

이 글에서는 read_sql 함수만을 정리한다.

 

방법은 아주 간단하다. 실행할 SQL과 생성한 connection 객체를 read_sql 함수에 전달하여 실행하기만 하면 된다.

import pymysql

conn = pymysql.connect(host='DB_SERVER_IP', port='PORT'
                       user='USERNAME', password='PASSWORD',
                       db='DATABASE_NAME', charset='CHARSET')
                       
# SQL 정의
sql = "SELECT * FROM students;"

# SQL 실행
result = pandas.read_sql(sql, conn)

# 연결 종료
conn.close()

read_sql

 

 

참고 문서

pandas.read_sql

pandas.read_sql_query

pandas.read_sql_table

https://sarc.io/index.php/mariadb/1738-python-pandas-mysql

[TIL] MySQL - Pandas 연동으로 python 환경에 데이터 받아오기

MySQL - pandas & pymysql 라이브러리