반응형

개념
- 공식 도큐먼트: https://www.sqlalchemy.org/
- 나는 이걸 왜 공부하고 있는가 : airflow 가 이것에 의존성을 가지기 때문입니다.
- python 라이브러리입니다.
- SQLAlchemy는 데이터 매퍼 패턴 을 제공하는 선택적 구성 요소인 객체 관계형 매퍼(ORM)로 가장 유명합니다. 여기서 클래스는 개방형 다중 방식으로 데이터베이스에 매핑될 수 있으므로 객체 모델과 데이터베이스 스키마를 한 번에 개발할 수 있습니다.
- ORM(Object Relational Mapping)
- 말그대로 객체(Object)와 관계(Relation)를 연결해주는것입니다.
- 데이터베이스의 데이터를 파이썬 코드의 Object와 동일시 하게 작업하게 돕습니다.
- 말그대로 객체(Object)와 관계(Relation)를 연결해주는것입니다.
- 장점
-
- 객체 지향적인 코드로 비즈니스 로직에 집중가능
- 재사용 및 유지보수 편리성이 증가
- DBMS에 대한 종속성이 줄어듬.
-
- 단점
- ORM 만으로 서비스를 구현하기 어려움.
- 프로시저가 많은 시스템에서는 장점을 가져가기 어려움.
- 예시 코드1 : 메모리 인식 및 테이블 생성
예시 코드
\# 설치
\# !pip install sqlalchemy
from sqlalchemy import create_engine,declarative_base
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
engine = create_engine('sqlite:///:memory', echo=True)
# 위 명령이 메모리에 인식 시키는 상황이다.(DB에 바로 연결시키는건 아님)
# echo=True는 찍히는 쿼리를 볼 수 있다.
Base = declarative_base()
"""
테이블 생성은 위에서와 같이 선언형을 베이스로 하고, 클래스가 테이블을 의미하는게 아니라, 클래스에 넣고 __tablename__에 정의해야 원하는 테이블 명으로 맵핑이 이루어진다.
"""
class Car(Base):
__tablename__ = 'cars'
id = Column(Integer, primary_key=True)
date = Column(Integer)
color = Column(String(30))
modelNm = Column(String(30))
Car.__table__.create(bind=engine, checkfirst=True) # 코드 마지막 줄에 ‘Movie.table.create()‘가 있어야 실질적으로 생성을 한다.

- insert
- 생성한 데이터베이스에 데이터 처리를 하려면,
sessionmaker를 이용합니다.
- 생성한 데이터베이스에 데이터 처리를 하려면,
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
car_list=Car(date=20190625, color='red', modelNm="아반떼")
session.add(car_list)
session.commit() # 커밋까지 해야 데이터 정상 insert 됨.

- get
- 만약 잘 입력이 됐는지 확인합니다.
session.query(Car).all()과 같이 불러온 뒤, 반복문으로 돌면서 프린트 해보면 됩니다.
result = session.query(Car).all()
for row in result:
print(row.date,row.color,row.modelNm )

참고 문헌
https://www.sqlalchemy.org/features.html
https://ulfrid.github.io/python/python-sqlalchemy/
https://edykim.com/ko/post/getting-started-with-sqlalchemy-part-1/
반응형
'python' 카테고리의 다른 글
| 파이썬 정규표현식 다시보기 (0) | 2021.09.25 |
|---|