Akashic Records

10.3 ORM(Object-Relational Mapping) 본문

Python for Beginners

10.3 ORM(Object-Relational Mapping)

Andrew's Akashic Records 2023. 3. 31. 11:25
728x90

ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 호환성을 높이기 위한 기술입니다. ORM은 데이터베이스의 테이블을 프로그래밍 언어의 클래스로 매핑하고, 테이블의 레코드를 해당 클래스의 객체로 표현합니다. 이를 통해 개발자는 SQL 쿼리를 작성하지 않고도 데이터베이스를 조작할 수 있으며, 코드의 가독성과 유지 보수성이 향상됩니다.

파이썬에서는 SQLAlchemy와 같은 ORM 라이브러리를 사용하여 객체 지향적으로 데이터베이스를 다룰 수 있습니다. SQLAlchemy는 다양한 데이터베이스 시스템과 호환되며, 파이썬 객체를 사용하여 데이터베이스 작업을 처리할 수 있게 해줍니다.

기본적인 SQLAlchemy 사용법:

설치:

pip install sqlalchemy

 

예시 코드:

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

# 데이터베이스 연결
engine = create_engine('sqlite:///example.db', echo=True)

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

# 테이블 정의를 위한 클래스 생성
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    age = Column(Integer, nullable=False)

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

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

# 데이터 삽입
user1 = User(name='Charlie', age=22)
user2 = User(name='David', age=28)
session.add(user1)
session.add(user2)
session.commit()

# 데이터 조회
users = session.query(User).all()

for user in users:
    print(user.id, user.name, user.age)

# 세션 종료
session.close()

 

이 예시에서는 SQLite 데이터베이스를 사용했지만, SQLAlchemy는 다양한 데이터베이스 시스템과 호환됩니다. MySQL, PostgreSQL, Oracle 등의 데이터베이스에 연결하려면 create_engine 함수에 적절한 데이터베이스 URL을 전달하면 됩니다.

이와 같이 SQLAlchemy를 사용하면 데이터베이스와의 연동이 간단해지고, 객체 지향 프로그래밍 패러다임에 따라 데이터베이스 작업을 처리할 수 있습니다. 이를 통해 코드의 가독성과 유지 보수성이 향상되며, 데이터베이스 시스템 간의 마이그레이션도 용이해집니다.

728x90
Comments