본문 바로가기

언어/Python

[ Python ] SQLAlchemy + PostgreSQL - 데이터 베이스 연동하기

반응형

SQLAlchemyPostgreSQL과 연동하여 사용하는 방법을 단계별로 설명해 드릴게요. 이를 위해 psycopg2라는 PostgreSQL 드라이버를 사용해야 합니다.

  1. 필요한 라이브러리 설치
  2. 먼저 SQLAlchemypsycopg2를 설치합니다. 다음 명령어를 사용하세요:
   pip install sqlalchemy psycopg2-binary
  1. 데이터베이스 연결 설정
  2. PostgreSQL 데이터베이스에 연결하려면 create_engine() 메서드를 사용하여 연결 URL을 설정해야 합니다. PostgreSQL의 연결 URL 형식은 다음과 같습니다:
   postgresql+psycopg2://username:password@host:port/database_name

예를 들어, usernameuser, passwordpassword, hostlocalhost, port5432, 데이터베이스 이름이 mydatabase라면, 다음과 같이 설정합니다:

   from sqlalchemy import create_engine

   # PostgreSQL 데이터베이스 연결 설정
   engine = create_engine('postgresql+psycopg2://user:password@localhost:5432/mydatabase', echo=True)
  1. ORM을 사용한 테이블 정의
    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)

        def __repr__(self):
            return f"<User(name='{self.name}', age='{self.age}')>"

    # 데이터베이스에 테이블 생성
    Base.metadata.create_all(engine)
  1. 이전과 마찬가지로 declarative_base()를 사용해 기본 클래스를 생성하고, 이를 상속받는 방식으로 테이블을 정의합니다.
  2. 세션 설정
  3. 데이터베이스와 상호작용하기 위해 Session을 설정합니다.
   from sqlalchemy.orm import sessionmaker

   # 세션 생성
   Session = sessionmaker(bind=engine)
   session = Session()
  1. 데이터 삽입
  2. 사용자 데이터를 추가하는 예시입니다.
   # 새 사용자 인스턴스 생성
   new_user = User(name='Bob', age=25)

   # 세션을 통해 데이터 추가
   session.add(new_user)

   # 데이터베이스에 커밋
   session.commit()
  1. 데이터 조회
  2. 사용자 데이터를 조회하는 방법입니다.
   # 모든 사용자 조회
   users = session.query(User).all()
   for user in users:
       print(user)

   # 특정 사용자 조회
   user = session.query(User).filter_by(name='Bob').first()
   print(user)
  1. 데이터 수정 및 삭제
    • 데이터를 수정하려면 객체의 속성을 변경한 후 커밋하면 됩니다.
     user = session.query(User).filter_by(name='Bob').first()
     user.age = 26
     session.commit()
     ```

   - 데이터를 삭제하려면 `session.delete()` 메서드를 사용합니다.

     ```python
     user = session.query(User).filter_by(name='Bob').first()
     session.delete(user)
     session.commit()
  1. 세션 닫기
  2. 작업이 끝난 후에는 세션을 닫아야 합니다.
   session.close()

이런 방식으로 SQLAlchemy를 통해 PostgreSQL 데이터베이스와 상호작용할 수 있습니다. SQLAlchemy의 ORM 기능을 사용하면 데이터베이스와 파이썬 코드 간의 매핑을 쉽게 할 수 있고, 복잡한 SQL 쿼리도 객체 지향 방식으로 처리할 수 있습니다.

반응형