ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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연동 #파이썬 #데이터사이언스

    반응형
Designed by Tistory.