[python] SQLAlchemy를 사용하여 데이터베이스 통계 수집하기

SQLAlchemy는 파이썬에서 데이터베이스를 다룰 수 있는 강력한 도구입니다. 이를 사용하여 데이터베이스에서 통계를 수집할 수 있습니다. 이번 블로그 포스트에서는 SQLAlchemy를 사용하여 데이터베이스에서 통계를 수집하는 방법을 알아보겠습니다.

ORM(Object-Relational Mapping) 설정하기

먼저 SQLAlchemy를 사용하여 데이터베이스와 연결하고 ORM을 설정해야 합니다. SQLAlchemy는 다양한 데이터베이스를 지원하며, 여기서는 MySQL을 예시로 사용하겠습니다.

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# 데이터베이스 연결 설정
engine = create_engine('mysql+pymysql://username:password@localhost/dbname', echo=True)

# Base 클래스 생성
Base = declarative_base()

# 모델 클래스 정의
class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    age = Column(Integer)

# 세션 생성
Session = sessionmaker(bind=engine)
session = Session()

위의 코드에서는 SQLAlchemy의 create_engine 함수를 사용하여 MySQL 데이터베이스에 연결하고, declarative_base 함수를 사용하여 모델 클래스를 만들었습니다. User 클래스는 users 테이블과 매핑되도록 정의되었습니다.

통계 데이터 수집하기

이제 데이터베이스에서 원하는 통계를 수집하는 코드를 작성해보겠습니다. 예를 들어, 특정 조건을 만족하는 사용자의 수를 계산하는 코드를 작성해보겠습니다.

from sqlalchemy import func

# 특정 조건을 만족하는 사용자 수 계산
count = session.query(func.count(User.id)).filter(User.age >= 18).scalar()

print("18세 이상인 사용자 수:", count)

위의 코드에서는 session.query 함수를 사용하여 데이터베이스에서 사용자의 수를 계산합니다. filter 함수를 사용하여 특정 조건을 만족하는 사용자만을 선택할 수 있습니다. scalar 함수를 사용하여 계산된 값을 가져옵니다.

결과 확인하기

코드를 실행해보면, 18세 이상인 사용자의 수가 출력됩니다. 이와 같은 방법으로 다양한 통계를 수집할 수 있습니다.

SQLAlchemy를 사용하여 데이터베이스에서 통계를 수집하는 방법에 대해 알아보았습니다. SQLAlchemy의 다양한 기능을 활용하여 원하는 통계를 쉽게 수집할 수 있습니다. 추가적인 정보는 SQLAlchemy의 공식 문서를 참고해주세요.

참고: SQLAlchemy 공식 문서