SQLAlchemy는 Python에서 데이터베이스 작업을 쉽고 효율적으로 수행할 수 있게 해주는 강력한 오픈 소스 도구입니다. SQLAlchemy는 데이터베이스 연결, 쿼리 실행, 데이터 조작 등의 작업을 단순화하며, 개발자가 DBMS(데이터베이스 관리 시스템) 특정 기능에 크게 의존하지 않고도 데이터베이스를 다룰 수 있도록 돕습니다.
SQLAlchemy의 주요 구성 요소
- SQLAlchemy Core: 데이터베이스 연결, 쿼리 생성, 트랜잭션 처리 등의 기본 기능을 제공합니다.
- SQLAlchemy ORM(Object-Relational Mapping): 객체와 데이터베이스 테이블 간의 매핑을 처리하여 개발자가 객체 지향 프로그래밍 방식으로 데이터베이스를 다룰 수 있게 해줍니다.
- 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 등의 구성 요소를 활용하면 데이터베이스 연결, 쿼리 작성, 데이터 조작, 스키마 관리 등 다양한 작업을 보다 간단하게 수행할 수 있습니다.
'파이썬' 카테고리의 다른 글
ChatGPT API의 function_call (1) | 2024.02.11 |
---|---|
ChatGPT API를 활용한 똑똑한 채팅봇 만들기: OpenAI (1) | 2024.02.09 |
크롤링 요소 검색 비교 : Selenium vs BeautifulSoup (0) | 2024.02.02 |