-
Pandas read_sql 완전정복! SQL 데이터, 한 번에 DataFrame으로 불러오기 🎉Python 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연동 #파이썬 #데이터사이언스
반응형