[Python] SQLAlchemy 이해하기
SQLAlchemy란?
SQLAlchemy는 파이썬을 위한 강력한 SQL 도구이자 객체 관계 매핑(ORM) 라이브러리다.
개발자들에게 데이터베이스와 상호 작용할 수 있는 효율적이고 유연한 인터페이스를 제공하며,
복잡한 쿼리 실행, 데이터베이스 스키마 조작, 파이썬 객체와의 통합을 쉽게 할 수 있다.
SQLAlchemy는 크게 두 가지 주요 구성 요소로 나눌 수 있다.
Core | SQL 표현 언어를 사용하여 데이터베이스와 직접 상호 작용하는 레이어 SQLAlchemy의 기본 기능으로, 데이터베이스 쿼리를 직접 작성하고 실행할 수 있음 |
ORM (Object-Relational Mapper) | SQLAlchemy의 객체 관계 매핑 레이어 파이썬 클래스와 데이터베이스 테이블 간의 매핑을 관리함 데이터베이스에서 가져온 데이터를 파이썬 객체로 다룰 수 있으며, 복잡한 SQL 쿼리를 파이썬 코드로 표현 가능 |
SQLAlchemy를 이용한 간단한 데이터베이스 설정과 사용
먼저 SQLAlchemy를 사용하기 위해 설치를 해준다.
pip install sqlalchemy
데이터베이스 연결 설정
SQLAlchemy는 다양한 데이터베이스를 지원하며, 데이터베이스 연결을 위해 'create_engine' 함수를 사용한다.
다음은 SQLite 데이터베이스에 연결하는 예제이다.
from sqlalchemy import create_engine
# SQLite 데이터베이스 연결
engine = create_engine('sqlite:///example.db', echo=True)
위 코드에서 'echo=True'는 SQLAlchemy가 실행하는 모든 SQL 쿼리를 출력하도록 설정한다.
테이블 생성
SQLAlchemy ORM을 사용하여 데이터베이스 테이블을 정의할 수 있다.
다음은 사용자 정보를 정의할 테이블을 정의하는 예제다.
from sqlalchemy import Column, Integer, String, Sequence
from sqlalchemy.orm import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
name = Column(String(50))
age = Column(Integer)
def __repr__(self):
return f"<User(name='{self.name}', age={self.age})>"
# 테이블 생성
Base.metadata.create_all(engine)
위 코드는 'User'라는 클래스를 정의하여 'users' 테이블에 매핑한다. 이 클래스는 사용자의 ID, 이름, 나이를 저장할 수 있는 컬럼을 포함하고 있다.
데이터 삽입
정의된 ORM 클래스를 사용하여 데이터베이스에 데이터를 삽입할 수 있다.
예를 들어, 새로운 사용자를 추가하려면 다음과 같이 코드를 작성할 수 있다.
from sqlalchemy.orm import sessionmaker
# 세션 생성
Session = sessionmaker(bind=engine)
session = Session()
# 새 사용자 추가
new_user = User(name='Alice', age=30)
session.add(new_user)
session.commit()
위 코드에서 세션(Session)은 데이터베이스와의 모든 상호 작용을 관리하는 객체다.
데이터를 삽입할 때 'add()' 메서드를 사용하여 새 객체를 추가하고, 'commit()'을 호출하여 변경사항을 커밋한다.
데이터 조회
데이터를 조회하려면 'query()' 메서드를 사용할 수 있다.
다음은 모든 사용자를 조회하는 예제다.
# 모든 사용자 조회
users = session.query(User).all()
for user in users:
print(user)
위 코드에서는 'session.query(User).all()'을 사용해 'User' 테이블의 모든 데이터를 가져온다.
데이터 업데이트 및 삭제
데이터를 업데이트하거나 삭제하는 것도 간단하다.
# 사용자 업데이트
user_to_update = session.query(User).filter_by(name='Alice').first()
user_to_update.age = 32
session.commit()
# 사용자 삭제
user_to_delete = session.query(User).filter_by(name='Alice').first()
session.delete(user_to_delete)
session.commit()
이처럼 SQLAlchemy를 사용하면 파이썬 객체와 데이터베이스 간의 작업을 쉽게 처리할 수 있다.
'👩💻 Develope > Python' 카테고리의 다른 글
[Python][bs4] BeautifulSoup4에서 텍스트로 파싱하기 (0) | 2024.10.08 |
---|---|
[Python] glob (1) | 2024.09.26 |
[Pandas] to.sql() (0) | 2024.08.23 |
[Pandas] apply로 다중 반환 값을 여러 열에 할당하기 (0) | 2024.08.22 |
[Pandas] 데이터프레임에서 날짜와 시간 다루기 (0) | 2024.08.09 |