Python과 SQLAlchemy로 데이터베이스 연결하기
현대 소프트웨어 개발에서 데이터베이스는 필수적인 요소로 자리 잡고 있습니다. 이를 관리하고 활용하기 위한 다양한 도구들이 존재하지만, Python에서는 SQLAlchemy라는 ORM(Object Relational Mapping) 라이브러리를 주로 사용합니다. SQLAlchemy를 이용하면 다양한 데이터베이스와 효과적으로 연동할 수 있으며, 파이썬 코드로 SQL 쿼리를 간편하게 작성할 수 있습니다. 이번 글에서는 SQLAlchemy를 통해 데이터베이스에 연결하고, 데이터를 조작하는 방법에 대해 알아보겠습니다.

SQLAlchemy 설치
SQLAlchemy를 사용하기 위해서는 우선 해당 라이브러리를 설치해야 합니다. Python 환경에서 아래의 커맨드를 실행하여 설치할 수 있습니다:
pip install SQLAlchemy
데이터베이스 엔진 생성
데이터베이스에 접속하기 위해서는 먼저 엔진을 생성해야 합니다. 예를 들어, SQLite 데이터베이스를 이용할 경우 다음과 같이 작성할 수 있습니다:
from sqlalchemy import create_engine
engine = create_engine("sqlite:///example.db")
위의 코드에서 ‘example.db’라는 파일명으로 데이터베이스 파일을 지정했습니다.
테이블 생성하기
SQLAlchemy를 통해 테이블을 생성하기 위해서는 클래스를 정의하고, SQLAlchemy의 Base 클래스를 상속받아야 합니다. 아래는 사용자 정보를 저장하는 User 테이블을 생성하기 위한 예시입니다:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
이제 정의된 클래스에 따라 데이터베이스에 테이블을 생성할 준비가 완료되었습니다. 다음 명령어로 테이블을 실제로 생성할 수 있습니다:
Base.metadata.create_all(engine)
데이터 추가하기
테이블에 데이터를 추가하기 위해서는 세션(session)을 생성하고, 그 세션을 통해 데이터를 추가해야 합니다. 세션 객체를 활용하여 새로운 데이터를 추가하는 방법은 다음과 같습니다:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
new_user = User(name="Alice", age=28)
session.add(new_user)
session.commit()
위 코드는 ‘Alice’라는 이름과 28세의 사용자 정보를 ‘users’ 테이블에 추가하는 예시입니다.

데이터 조회하기
삽입된 데이터를 조회하는 것도 세션을 통해 수행할 수 있습니다. 모든 사용자 정보를 가져오고 출력하는 코드는 아래와 같습니다:
users = session.query(User).all()
for user in users:
print(f"{user.id}: {user.name}, {user.age}")
데이터 수정하기
기존 데이터를 수정하고 싶다면, 먼저 원하는 데이터를 검색한 후 해당 데이터를 수정하고 커밋하면 됩니다. 예를 들어, ‘Alice’의 나이를 30으로 변경하는 코드는 다음과 같습니다:
user = session.query(User).filter(User.name == "Alice").first()
if user:
user.age = 30
session.commit()
데이터 삭제하기
데이터를 삭제하는 것도 간단합니다. 특정 조건에 맞는 데이터를 찾아서 삭제한 후, 변경사항을 커밋하면 됩니다:
user = session.query(User).filter(User.name == "Alice").first()
if user:
session.delete(user)
session.commit()
SQLAlchemy와 데이터베이스 연결 관리
SQLAlchemy는 기본적으로 연결 풀을 사용하여 효율적인 데이터베이스 연결을 관리합니다. 데이터베이스 간의 연결이 필요한 경우, 관리되지 않은 연결이 발생하지 않도록 주의해야 합니다. 아래는 연결을 닫고 자원을 정리하는 방법입니다:
session.close()
engine.dispose()

마무리하며
이번 글에서는 SQLAlchemy를 통해 Python에서 데이터베이스에 연결하고 데이터를 조작하는 기본적인 방법을 소개하였습니다. 이 라이브러리는 데이터베이스와의 상호작용을 매우 간편하게 만들어주며, 다양한 데이터베이스 시스템과 쉽게 통합할 수 있는 장점이 있습니다. 데이터베이스를 활용한 프로젝트를 진행할 때 SQLAlchemy를 적극적으로 활용해 보시기 바랍니다.
추가 정보
SQLAlchemy는 ORM 방식 외에도 Core 방식으로도 사용이 가능합니다. Core 방식은 SQL 쿼리를 직접 작성하는 방법으로, 성능적으로 유리할 수 있습니다. 사용자의 요구에 따라 알맞은 방식을 선택하여 활용하시기 바랍니다.
- ORM 방식: Python 클래스를 데이터베이스 테이블에 매핑하여 사용
- Core 방식: SQL 쿼리를 직접 작성하여 데이터베이스와 상호작용
앞으로도 다양한 데이터베이스와의 연동 방법에 대해 알아가며 더욱 깊이 있는 프로젝트를 진행해 보시길 바랍니다. 감사합니다.
질문 FAQ
SQLAlchemy를 설치하는 방법은 무엇인가요?
SQLAlchemy를 사용하려면 먼저 해당 라이브러리를 설치해야 합니다. 이를 위해서는 명령 프롬프트나 터미널에서 ‘pip install SQLAlchemy’ 명령어를 입력하면 됩니다.
Python에서 SQLAlchemy를 통해 데이터를 조작하는 방법은?
데이터를 관리하려면 세션을 생성한 후, 해당 세션을 사용하여 추가, 조회, 수정 또는 삭제 작업을 진행할 수 있습니다. 각 작업 후에는 반드시 ‘session.commit()’을 호출하여 변경 사항을 저장해야 합니다.