반응형
SQLAlchemy
는 파이썬에서 데이터베이스와 상호작용하기 위한 인기 있는 라이브러리로, 객체 관계 매핑(Object Relational Mapping, ORM) 및 SQL 표현 언어 기능을 제공합니다. 기본적인 사용법을 소개할게요.
- 설치
먼저 SQLAlchemy를 설치해야 합니다. 다음 명령어로 설치할 수 있습니다:
pip install sqlalchemy
- 기본 설정
데이터베이스에 연결하고 테이블을 정의하려면Engine
과Session
을 설정해야 합니다.
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()
- 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)
- 데이터 삽입
데이터를 삽입하려면 인스턴스를 생성하고 세션을 통해 추가한 뒤, 커밋해야 합니다.
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()
- 데이터 조회
데이터를 조회하려면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)
- 데이터 수정
객체의 속성을 변경한 후 커밋하여 데이터를 수정할 수 있습니다.
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()
- 데이터 삭제
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()
- 세션 닫기
작업이 끝난 후에는 세션을 닫아야 합니다.
session.close()
이런 기본적인 절차를 통해 SQLAlchemy로 데이터베이스를 관리할 수 있습니다. ORM 기능을 사용하면 데이터베이스와 파이썬 객체 간의 변환이 훨씬 간편해집니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] mariadb - MariaDB와 연동하기 (0) | 2024.10.10 |
---|---|
[ Python ] SQLAlchemy + PostgreSQL - 데이터 베이스 연동하기 (1) | 2024.10.09 |
[ Python ] cached_property - 값을 재사용 하기 (1) | 2024.10.09 |
[ Python ] sleep() 딜레이(delay) 하기 (2) | 2024.10.01 |
[ Python ] -menv 가상 환경을 사용하는 이유 - 개념 (1) | 2024.09.30 |