SQLAlchemy: 데이터베이스 툴킷

2024. 11. 13. 10:17·파이썬
반응형

SQLAlchemy는 Python에서 데이터베이스 작업을 쉽고 효율적으로 수행할 수 있게 해주는 강력한 오픈 소스 도구입니다. SQLAlchemy는 데이터베이스 연결, 쿼리 실행, 데이터 조작 등의 작업을 단순화하며, 개발자가 DBMS(데이터베이스 관리 시스템) 특정 기능에 크게 의존하지 않고도 데이터베이스를 다룰 수 있도록 돕습니다.

SQLAlchemy의 주요 구성 요소

  1. SQLAlchemy Core: 데이터베이스 연결, 쿼리 생성, 트랜잭션 처리 등의 기본 기능을 제공합니다.
  2. SQLAlchemy ORM(Object-Relational Mapping): 객체와 데이터베이스 테이블 간의 매핑을 처리하여 개발자가 객체 지향 프로그래밍 방식으로 데이터베이스를 다룰 수 있게 해줍니다.
  3. Alembic: 데이터베이스 스키마 마이그레이션을 관리하는 도구입니다.

SQLAlchemy Core 사용하기

SQLAlchemy Core는 데이터베이스와의 직접적인 상호 작용을 제공합니다. 다음은 SQLAlchemy Core를 사용하여 데이터베이스에 연결하고 쿼리를 실행하는 예제입니다:

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData

# 데이터베이스 연결
engine = create_engine('sqlite:///example.db')

# 메타데이터 객체 생성
metadata = MetaData()

# 테이블 정의
users = Table(
    'users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('email', String)
)

# 테이블 생성
metadata.create_all(engine)

# 데이터 삽입
conn = engine.connect()
conn.execute(users.insert(), [
    {'name': 'John Doe', 'email': 'john@example.com'},
    {'name': 'Jane Doe', 'email': 'jane@example.com'}
])

# 데이터 조회
result = conn.execute(users.select())
for row in result:
    print(row)

이 코드에서는 SQLite 데이터베이스에 연결하고, 테이블을 정의한 다음 데이터를 삽입하고 조회하는 과정을 보여줍니다.

SQLAlchemy ORM 사용하기

SQLAlchemy ORM은 객체와 데이터베이스 테이블 간의 매핑을 처리하여, 개발자가 객체 지향 프로그래밍 방식으로 데이터베이스를 다룰 수 있게 해줍니다. 다음은 SQLAlchemy ORM을 사용하는 예제입니다:

from sqlalchemy.orm import declarative_base, sessionmaker
from sqlalchemy import Column, Integer, String

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

# 모델 클래스 정의
class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

# 데이터베이스 연결
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
session = Session()

# 데이터 삽입
user1 = User(name='John Doe', email='john@example.com')
user2 = User(name='Jane Doe', email='jane@example.com')
session.add_all([user1, user2])
session.commit()

# 데이터 조회
users = session.query(User).all()
for user in users:
    print(f"{user.name} ({user.email})")

이 코드에서는 SQLAlchemy ORM을 사용하여 User 모델 클래스를 정의하고, 이를 통해 데이터베이스 데이터를 다룹니다. 모델 클래스의 인스턴스를 생성하고 session.add_all()로 추가한 다음 session.commit()으로 데이터베이스에 저장합니다. 또한 session.query(User).all()을 통해 모든 사용자 데이터를 조회할 수 있습니다.

Alembic을 이용한 데이터베이스 마이그레이션

Alembic은 SQLAlchemy 프로젝트의 일부로, 데이터베이스 스키마 변경 사항을 관리하고 적용하는 데 사용됩니다. Alembic을 사용하면 데이터베이스 스키마 변경 사항을 쉽게 추적하고 배포할 수 있습니다.

# Alembic 초기화
alembic init migrations

# 마이그레이션 스크립트 생성
alembic revision --autogenerate -m "Added users table"

# 마이그레이션 적용
alembic upgrade head

 

SQLAlchemy는 Python 개발자들이 데이터베이스를 쉽고 효율적으로 다룰 수 있게 해주는 강력한 도구입니다. SQLAlchemy Core, SQLAlchemy ORM, Alembic 등의 구성 요소를 활용하면 데이터베이스 연결, 쿼리 작성, 데이터 조작, 스키마 관리 등 다양한 작업을 보다 간단하게 수행할 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'파이썬' 카테고리의 다른 글

데이터 클래스 비교: dataclass vs Pydantic BaseModel  (0) 2024.12.08
[Python 프로파일링] py-spy와 yappi로 파이썬 코드 성능 분석하기  (2) 2024.12.02
ChatGPT API의 function_call  (2) 2024.02.11
ChatGPT API를 활용한 똑똑한 채팅봇 만들기: OpenAI  (1) 2024.02.09
크롤링 요소 검색 비교 : Selenium vs BeautifulSoup  (0) 2024.02.02
'파이썬' 카테고리의 다른 글
  • 데이터 클래스 비교: dataclass vs Pydantic BaseModel
  • [Python 프로파일링] py-spy와 yappi로 파이썬 코드 성능 분석하기
  • ChatGPT API의 function_call
  • ChatGPT API를 활용한 똑똑한 채팅봇 만들기: OpenAI
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    codingcommunity
    믈레코비타멸균우유
    카페24리뷰
    C#
    programmerlife
    상품 리뷰 크롤링
    스크립트 실행 순서
    긴유통기한우유
    카페24리뷰이관
    리뷰이관
    programming101
    쇼핑몰리뷰
    learntocode
    list
    appdevelopment
    리뷰관리
    파이썬
    셀레니움
    유니티
    devlife
    스마트스토어리뷰
    리스트
    ipcamera
    rtsp
    라떼우유
    Python
    스크립트 실행
    codingtips
    unity
    cv2
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
SQLAlchemy: 데이터베이스 툴킷
상단으로

티스토리툴바