Python

Pandas read_sql 완전정복! SQL 데이터, 한 번에 DataFrame으로 불러오기 🎉

weblogic 2025. 4. 25. 13:47
반응형

데이터 분석을 하다 보면 "DB에서 바로 데이터를 뽑아와서 Pandas로 분석할 수 없을까?"라는 생각, 한 번쯤 해보셨죠? 오늘은 데이터 분석가들의 필수 도구 Pandas의 read_sql 함수를 활용해 SQL 데이터베이스에서 데이터를 바로 DataFrame으로 불러오는 방법을 쉽고 재미있게 알려드릴게요! 🐼📊


1. Pandas read_sql이 뭐예요? 🤔

read_sql 함수는 SQL 쿼리 결과나 데이터베이스 테이블을 Pandas의 DataFrame으로 바로 읽어오는 마법 같은 함수입니다. 복잡한 데이터베이스 연결, 번거로운 데이터 변환 과정 없이, 한 줄 코드로 데이터 분석을 시작할 수 있죠!

한마디로, SQL 데이터 → Pandas DataFrame 변환을 한방에!


2. read_sql 기본 사용법 👩‍💻

먼저, 가장 기본적인 사용법부터 볼까요?

import pandas as pd
import sqlite3

# 데이터베이스 연결
con = sqlite3.connect("kospi.db")

# SQL 쿼리 실행 & DataFrame 변환
df = pd.read_sql("SELECT * FROM kakao", con)
print(df.head())
  • sql: 실행할 SQL 쿼리 또는 테이블 이름
  • con: 데이터베이스 연결 객체 (예: sqlite3, SQLAlchemy 등)

이렇게만 해도 데이터베이스에 있는 kakao 테이블이 DataFrame으로 쏙! 들어옵니다. 너무 쉽죠? 😆


3. 다양한 데이터베이스 연결 방법 🌐

Pandas의 read_sql은 다양한 데이터베이스와 찰떡궁합!
아래처럼 여러 DB에 연결할 수 있어요.

데이터베이스 연결 방법 예시
SQLite sqlite3.connect("db파일경로")
MySQL pymysql.connect(host, user, password, db, charset)
PostgreSQL, Oracle 등 SQLAlchemy 엔진 사용

예시: MySQL 연결

import pymysql
import pandas as pd

db = pymysql.connect(
    host='localhost',
    user='root',
    passwd='비밀번호',
    db='database_name',
    charset='utf8'
)
df = pd.read_sql("SELECT * FROM students", db)

예시: SQLAlchemy로 연결

from sqlalchemy import create_engine
import pandas as pd

engine = create_engine('sqlite:///mydatabase.db')
df = pd.read_sql("SELECT * FROM mytable", engine)

4. read_sql의 숨은 기능들 🕵️‍♂️

👉 인덱스 지정하기

df = pd.read_sql("SELECT * FROM test", con, index_col='index')
  • index_col로 특정 컬럼을 DataFrame의 인덱스로 지정할 수 있어요!

👉 날짜 자동 파싱

df = pd.read_sql("SELECT * FROM sales", con, parse_dates=['date'])
  • parse_dates로 날짜 컬럼을 자동으로 datetime 타입으로 변환!

👉 매개변수 쿼리로 안전하게

query = "SELECT * FROM mytable WHERE column = %s"
params = ('value',)
df = pd.read_sql(query, con, params=params)
  • SQL 인젝션 걱정 없이 안전하게 쿼리 실행!

👉 대용량 데이터도 문제없어요

for chunk in pd.read_sql("SELECT * FROM big_table", con, chunksize=1000):
    # 각 청크마다 데이터 처리
    print(chunk.head())
  • chunksize로 데이터를 나눠서 메모리 걱정 없이 처리 가능!

5. 실전! 쿼리 결과를 CSV로 저장하기 📁

SQL에서 바로 뽑은 데이터를 CSV로 저장하고 싶다면?

df = pd.read_sql("SELECT * FROM students", db)
df.to_csv('students.csv', index=False, encoding='utf-8')
  • 데이터 분석, 리포트, 공유까지 한 번에!

6. Flask-SQLAlchemy와 read_sql의 만남 🌟

웹 개발에서 많이 쓰는 Flask-SQLAlchemy의 쿼리도 Pandas로 바로 변환할 수 있어요.

queryset = Post.query.filter(Post.title.contains('Python'))
df = pd.read_sql(queryset.statement, queryset.session.bind)
  • ORM의 강력함 + Pandas의 편리함, 두 마리 토끼를 잡자!

7. 마무리: read_sql, 데이터 분석의 시작점 🚀

Pandas의 read_sql 함수만 있으면 데이터베이스와 Pandas 사이의 장벽이 사라집니다.
복잡한 데이터도 한 줄로 불러와, 분석과 시각화에 바로 활용할 수 있죠.

여러분도 read_sql로 데이터 분석을 더 쉽고, 빠르고, 재미있게 시작해보세요!
궁금한 점이나 꿀팁이 있다면 댓글로 공유해 주세요. 😊


💡 오늘의 한 줄 요약

SQL 데이터, Pandas read_sql로 한 번에 DataFrame으로 가져오자!


#Pandas #read_sql #SQL #데이터분석 #Python #DataFrame #DB연동 #파이썬 #데이터사이언스

반응형