94년생 스피노자

[Week 2 - Day 4] ORM (Object Relational Mapper) 본문

코드스테이츠 AI 부트캠프/iii) 데이터 엔지니어링

[Week 2 - Day 4] ORM (Object Relational Mapper)

94년생 스피노자 2021. 7. 20. 10:20
728x90

커피 한 모금

오늘은  ORM에 대해서 배운다.

간단히 말해서 Python에서 SQL을 가능하게 한다.

 

저번에 SQL을 배울 때는 별도의 문법을 사용해야 했다.

ORM은 Python스럽게 SQL을 조작할 수 있게 만들어준다.

 

이를 위해서는 SQLAlchemy를 설치해줘야한다.

따라갈 수 있는 코드를 아래 작성해놓겠다.

 

Step 1. SQLAlchemy 설치

pip install --pre SQLAlchemy

Step 2. SQLAlchemy Base 및 Engine 만들기

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base

Base = declarative_base()
engine = create_engine("sqlite:///orm_db.sqlite3")

Step 3. SQL Table 만들기

from sqlalchemy import Column, Integer, String

# Table 만들기
class User(Base):
	__tablename__ = 'User'
    
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
    
    def __repr__(self):
    	return f"User {self.id}: {self.name}"
        
# 만들어진 Table을 Engine에 집어넣기
 base.metadata.create_all(engine)

Step 4. 인스턴스 추가하기

from sqlalchemy.orm import sessionmaker

# Engine과 연결하기
session = session maker(bind=engine)

# 인스턴스 추가하기
patrick = User(name="Patrick", age=20)
spongebob = User(name="Spongebob", age=20)

# Session에 추가하기
s = session()
s.add(patrick)
s.add(spongebob)

# 추가사항 SQL에 반영하기
s.commit()

Step 4-1. 인스턴스 제거하기 및 수정하기

# 인스턴스를 변경하려면 해당 인스턴스를 직접 불러와야함
patrick_remove = s.query(User).filter_by(name="Patrick").first()

# 불러온 것은 제거
s.delete(patrick_remove)
s.commit()

# 수정할 때도 마찬가지로 직접 불러와야함
spongebob_happy = s.query(User).filter_by(name="Spongebob").first()

# 불러온 것을 수정
spongebob_happy.name = "Spongebob_Happy"
s.commit()

 

 

모두 행복하길

-끝-

728x90