인프런 커뮤니티 질문&답변

이한희님의 프로필 이미지
이한희

작성한 질문수

Airflow 마스터 클래스

Custom Hook 만들고 bulk_load하기

db 통신 라이브러리 사용에 궁금한 부분이 있습니다.

작성

·

20

0

안녕하세요 강사님! 강의 잘 보고 있습니다! 다름이 아니라 개인적으로 공부를 하면서 db와의 통신 부분에서 궁금한 부분이 생겨서 질문드립니다!

 

에어플로우를 공부하면서 mysql 컨테이너도 함께 띄워서 db와의 통신을 공부하고 있고, 현재 db에 접속해서 저장된 데이터를 불러오고, 새로운 데이터를 insert하는 실습을 하고 있습니다.

 

몇몇 소스 코드를 보면 데이터를 불러오기 위해서 db와 연결하거나, db의 데이터를 조회할 때는 psycopg2나 pymysql과 같은 라이브러리를 사용하고, 수집 후 전처리된 데이터를 저장 할 때는 SQLAlchemy를 사용하는 코드들을 많이 봤는데, 이렇게 작업에 따라서 다른 라이브러리를 사용하는 이유를 알 수 있을까요??

 

제가 알기로는 psycopg2나 pymysql, SQLAlchemy 모두 데이터 조회, 저장 기능을 전부 사용가능한걸로 아는데 어떤 이유에서 작업별로 다른 라이브러리를 사용하는지 궁금합니다!

답변 1

0

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 이한희님!

먼저 강의를 잘 듣고 추가적인 실습환경도 만들어서 하신다니 잘 하고 계신 듯 합니다!

질문주신 라이브러리 같은 경우 테이블 형식의 데이터를 다루는 경우 파이썬에서는 pandas 라이브러리를 많이 사용하는데, pandas 그 자체를 받아서 DB에 넣을 수 있는 라이브러리는 SQLAlchemy만 가능하빈다.

psycopg2나 pymysql같은 경우 pandas 데이터프레임 그 자체를 파라미터로 받아서 넣을 수는 없어요. (row 하나씩 분해해서 데이터를 만든 후 insert 하는 방법을 사용해야 함)

 

저 같은 경우 pandas 데이터프레임을 쉽게 넣고, 조회하고자 할 경우 주로 SQLAlchemy를 사용하고 그 외에는 대체로 psycopg2 같은 라이브러리를 사용하곤 합니다.

참고로 psycopg2, pymysql 같은 경우 각각 postgres, mysql 전용 라이브러리이고, 해당 데이터베이스에 대해서는 SQLAlchemy 보다는 많은 기능을 지원하는 걸로 알아요.

 

그래서 postgres나 mysql 전용으로 좀 더 전문적으로 다루고자 할 경우 psycopg2, pymysql

DB 범용적으로 좀 더 쉽게 사용하고자 할 경우 SQLAlchemy 를 사용한다고 보심 될 것 같습니다.

이한희님의 프로필 이미지
이한희

작성한 질문수

질문하기