학생 기록(student records)이 저장되어 있는 sqlite3 데이터베이스가 있다고 가정해 보겠습니다. 이 데이터베이스의 모든 데이터를 읽어오면 다음과 같은 결과를 얻을 수 있습니다.
Id Name 0 1 stud1 1 2 stud2 2 3 stud3 3 4 stud4 4 5 stud5
해결 방법
이 문제를 해결하기 위해 아래 단계를 순서대로 따라 해 보겠습니다.
먼저 새로운 데이터베이스 연결(connection)을 정의합니다.
con = sqlite3.connect("db.sqlite3")
다음으로, pandas에서 제공하는 아래 함수를 사용하여 데이터베이스로부터 SQL 데이터를 읽어옵니다.
pd.read_sql_query()
read_sql_query함수에 SQL 쿼리문과 위에서 생성한 연결 객체(con)를 함께 전달하여, 테이블에 있는 모든 학생 데이터를 조회합니다.
pd.read_sql_query("SELECT * FROM student", con)
예제
더 잘 이해하실 수 있도록 전체 구현 코드를 살펴보겠습니다. 먼저 데이터 분석 라이브러리인 pandas와 Python 내장 모듈인 sqlite3를 임포트한 뒤, 데이터베이스에 연결하여 쿼리를 실행하고 결과를 DataFrame 형태로 출력합니다.
import pandas as pd
import sqlite3
# 데이터베이스 연결 생성
con = sqlite3.connect("db.sqlite3")
# SQL 쿼리 실행 후 DataFrame으로 변환
df = pd.read_sql_query("SELECT * FROM student", con)
print(df)
출력 결과
Id Name 0 1 stud1 1 2 stud2 2 3 stud3 3 4 stud4 4 5 stud5
이처럼 pd.read_sql_query()를 활용하면 SQL 쿼리 실행 결과를 손쉽게 pandas DataFrame으로 받아올 수 있으며, 이후 데이터 분석 및 가공 작업을 매우 편리하게 수행할 수 있습니다.