👩‍💻 Develope/Python

[Python] SQLAlchemy 이해하기

heywantodo 2024. 9. 2. 10:52
728x90
반응형

[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를 사용하면 파이썬 객체와 데이터베이스 간의 작업을 쉽게 처리할 수 있다.

728x90
반응형