본문 바로가기

언어/Python

[ Python ] SQLAlchemy + SQLite - 데이터 베이스 연결하기

반응형

SQLAlchemy는 파이썬에서 데이터베이스와 상호작용하기 위한 인기 있는 라이브러리로, 객체 관계 매핑(Object Relational Mapping, ORM) 및 SQL 표현 언어 기능을 제공합니다. 기본적인 사용법을 소개할게요.

  1. 설치
    먼저 SQLAlchemy를 설치해야 합니다. 다음 명령어로 설치할 수 있습니다:
   pip install sqlalchemy
  1. 기본 설정
    데이터베이스에 연결하고 테이블을 정의하려면 EngineSession을 설정해야 합니다.
   from sqlalchemy import create_engine
   from sqlalchemy.orm import sessionmaker

   # 데이터베이스 연결 설정 (SQLite 사용 예시)
   engine = create_engine('sqlite:///example.db', echo=True)

   # 세션 생성
   Session = sessionmaker(bind=engine)
   session = Session()
  1. ORM을 사용한 테이블 정의
    테이블을 정의하려면 declarative_base()를 사용해 기본 클래스를 생성하고, 이를 상속받는 방식으로 테이블을 정의합니다.
   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. 데이터 삽입
    데이터를 삽입하려면 인스턴스를 생성하고 세션을 통해 추가한 뒤, 커밋해야 합니다.
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 데이터베이스 연결 설정 (SQLite 사용 예시)
engine = create_engine('sqlite:///example.db', echo=True)

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

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}')>"


# 새 사용자 인스턴스 생성
new_user = User(name='Alice', age=30)

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

# 데이터베이스에 커밋
session.commit()
  1. 데이터 조회
    데이터를 조회하려면 session.query() 메서드를 사용합니다.
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 데이터베이스 연결 설정 (SQLite 사용 예시)
engine = create_engine('sqlite:///example.db', echo=True)

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

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}')>"


# 모든 사용자 조회
users = session.query(User).all()
for user in users:
   print(user)

# 특정 사용자 조회
user = session.query(User).filter_by(name='Alice').first()
print(user)
  1. 데이터 수정
    객체의 속성을 변경한 후 커밋하여 데이터를 수정할 수 있습니다.
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 데이터베이스 연결 설정 (SQLite 사용 예시)
engine = create_engine('sqlite:///example.db', echo=True)

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

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}')>"



user = session.query(User).filter_by(name='Alice').first()
user.age = 31
session.commit()
  1. 데이터 삭제
    session.delete() 메서드를 사용하여 데이터를 삭제할 수 있습니다.
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 데이터베이스 연결 설정 (SQLite 사용 예시)
engine = create_engine('sqlite:///example.db', echo=True)

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

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}')>"


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

이런 기본적인 절차를 통해 SQLAlchemy로 데이터베이스를 관리할 수 있습니다. ORM 기능을 사용하면 데이터베이스와 파이썬 객체 간의 변환이 훨씬 간편해집니다.

반응형