티스토리 뷰

python

SQLAlchemy

killog 2021. 9. 25. 14:43
반응형

SQLAlchemy

개념

  • 공식 도큐먼트: https://www.sqlalchemy.org/
  • 나는 이걸 왜 공부하고 있는가 : airflow 가 이것에 의존성을 가지기 때문입니다.
  • python 라이브러리입니다.
  • SQLAlchemy는 데이터 매퍼 패턴 을 제공하는 선택적 구성 요소인 객체 관계형 매퍼(ORM)로 가장 유명합니다. 여기서 클래스는 개방형 다중 방식으로 데이터베이스에 매핑될 수 있으므로 객체 모델과 데이터베이스 스키마를 한 번에 개발할 수 있습니다.
  • ORM(Object Relational Mapping)
    • 말그대로 객체(Object)와 관계(Relation)를 연결해주는것입니다.
      • 데이터베이스의 데이터를 파이썬 코드의 Object와 동일시 하게 작업하게 돕습니다.
  • 장점
      1. 객체 지향적인 코드로 비즈니스 로직에 집중가능
      2. 재사용 및 유지보수 편리성이 증가
      3. DBMS에 대한 종속성이 줄어듬.
  • 단점
    1. ORM 만으로 서비스를 구현하기 어려움.
    2. 프로시저가 많은 시스템에서는 장점을 가져가기 어려움.
  • 예시 코드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
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함