[파이썬] SQLAlchemy와 PostgreSQL 활용

SQLAlchemy는 Python에서 사용되는 강력한 ORM(Object Relational Mapping) 라이브러리입니다. PostgreSQL은 인기 있는 오픈 소스 데이터베이스 관리 시스템(DBMS) 중 하나로, 확장성과 신뢰성이 높은 데이터 저장 및 검색을 제공합니다. 이 블로그 포스트에서는 Python에서 SQLAlchemy를 사용하여 PostgreSQL 데이터베이스와 상호 작용하는 방법에 대해 알아보겠습니다.

SQLAlchemy 설치

먼저, SQLAlchemy를 설치해야 합니다. pip를 사용하여 쉽게 설치할 수 있습니다.

pip install SQLAlchemy

또한, PostgreSQL을 사용하기 위해 psycopg2를 설치해야 합니다.

pip install psycopg2

데이터베이스 연결

SQLAlchemy를 사용하여 PostgreSQL에 연결하려면 다음과 같이 작성합니다.

from sqlalchemy import create_engine

# PostgreSQL에 연결
engine = create_engine('postgresql://username:password@localhost:5432/dbname')

# 데이터베이스 연결 확인
if engine.connect():
    print("데이터베이스 연결 성공")

위의 코드에서, username, password, localhost, 5432, dbname에는 각각 사용자 이름, 비밀번호, 호스트, 포트, 데이터베이스 이름에 해당하는 실제 정보를 사용해야 합니다.

테이블 생성

SQLAlchemy를 사용하여 PostgreSQL 데이터베이스에서 테이블을 생성할 수 있습니다. 아래 예제에서는 users라는 테이블을 생성합니다.

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

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

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

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

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

위의 코드에서는 User 모델을 정의하고, Column 객체를 사용하여 각 열의 데이터 유형을 정의합니다. Base.metadata.create_all(engine)을 호출하여 실제 데이터베이스에 테이블을 생성합니다.

데이터 삽입

SQLAlchemy를 사용하여 PostgreSQL 데이터베이스에 데이터를 삽입하는 방법은 다음과 같습니다.

# Session 생성
Session = sessionmaker(bind=engine)
session = Session()

# 데이터 삽입
user1 = User(name='John', age=25)
user2 = User(name='Jane', age=30)

session.add(user1)
session.add(user2)
session.commit()

# 세션 종료
session.close()

위의 코드에서는 Session 클래스를 사용하여 세션을 생성합니다. User 모델의 객체를 생성하고, session.add() 메서드를 사용하여 세션에 객체를 추가한 뒤, session.commit()을 호출하여 변경 사항을 커밋합니다. 마지막으로, session.close()를 호출하여 세션을 종료합니다.

데이터 조회

SQLAlchemy를 사용하여 PostgreSQL 데이터베이스에서 데이터를 조회하는 방법은 다음과 같습니다.

# 모든 사용자 조회
users = session.query(User).all()

for user in users:
    print(f"ID: {user.id}, Name: {user.name}, Age: {user.age}")

# 특정 조건으로 사용자 조회
user = session.query(User).filter(User.name == 'John').first()

if user:
    print(f"ID: {user.id}, Name: {user.name}, Age: {user.age}")
else:
    print("사용자를 찾을 수 없습니다.")

위의 코드에서는 session.query(User)를 사용하여 모든 사용자를 조회하고, session.query(User).filter(User.name == 'John').first()를 사용하여 특정 조건으로 사용자를 조회합니다.

데이터 업데이트 및 삭제

SQLAlchemy를 사용하여 PostgreSQL 데이터베이스에서 데이터를 업데이트하거나 삭제하는 방법은 다음과 같습니다.

# 데이터 업데이트
user = session.query(User).filter(User.id == 1).first()

if user:
    user.age = 26
    session.commit()
else:
    print("사용자를 찾을 수 없습니다.")

# 데이터 삭제
user = session.query(User).filter(User.id == 1).first()

if user:
    session.delete(user)
    session.commit()
else:
    print("사용자를 찾을 수 없습니다.")

위의 코드에서는 session.query(User).filter(User.id == 1).first()를 사용하여 특정 사용자를 조회하고, 필요에 따라 데이터를 업데이트하거나 삭제합니다. 마찬가지로, session.commit() 메서드를 호출하여 변경 사항을 커밋합니다.

SQLAlchemy와 PostgreSQL을 함께 사용하면 Python 애플리케이션에서 강력하고 유연한 데이터베이스 관리를 할 수 있습니다. SQLAlchemy의 많은 기능과 PostgreSQL의 강력한 기능을 활용하여 데이터베이스 작업을 더욱 편리하고 효율적으로 수행할 수 있습니다.