전공영역 공부 기록

SQL Achemy 1편 - 원리와 쿼리 실행

악분 2021. 8. 14. 19:42
반응형

 

안녕하세요.

이 글은 sqlachemy이 무엇인지 설명하고 간단한 쿼리 실행예제를 다룹니다. 영상으로도 만나볼 수 있습니다.

https://youtu.be/GRoaytD1yVY

1. sqlalchemy란

sql alchmy는 하이레벨로 데이터베이스 개발작업을 도와주는 파이썬 패키지입니다. 데이터베이스 연결작업과 연결관리를 몰라도 alchemy에서 알아서 해주기 때문에 작업 효율성이 높아집니다. 

그리고 쿼리관리 선택지가 2가지가 있습니다. 쿼리문을 직접 실행하는 방법과 ORM(Object Relational Mapper)을 사용할 수 있습니다.

그림1 sql Alchemy 구조 (https://docs.sqlalchemy.org/en/14/intro.html)

 

2. sqlalchemy 쿼리문 실행

예제 실행 결과는 https://github.com/choisungwook/fastapid-example/blob/main/SQLAlchemy_basic/NOT_ORM.ipynb에서 볼수 있습니다.

 

sqlachemy를 이용해서 쿼리문을 실행해보겠습니다. sqlalchemy는 engine을 이용해서 쿼리문을 실행할 수 있습니다. Engine은 데이터베이스 연결 등을 담당하는 코어(core) 컴퍼넌트입니다. 데이터베이스 연결 설정 등 기능을 수행합니다.

 

아래 예제는 engine을 사용해서 sqlite에 연결하는 예제입니다. 간단하죠?

engine을 사용하지 않았더라면 프로토콜 정의부터 시작해서 모든 코드를 개발했어야 했지만, engine을 사용하면 쉽게 연결과정을 처리할 수 있습니다. 

테스트 목적으로 메모리 타입 sqlite 데이터베이스를 사용했습니다. 
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
conn = engine.connect()

 

간단히 name 칼럼만 있는 테이블을 생성해보겠습니다. execute함수로 쿼리문을 실행할 수 있습니다.

engine.execute('CREATE TABLE "EX1" ('
               'id INTEGER NOT NULL,'
               'name VARCHAR, '
               'PRIMARY KEY (id));')

그림1 테이블 생성 쿼리문 실행

 

생성한 테이블에 예제 샘플을 넣어보겠습니다. 

engine.execute('INSERT INTO "EX1" '
              '(id, name) '
              'VALUES (1, "raw")')

그림2 데이터 삽입 쿼리문 실행

 

삽입한 데이터가 있는지 select문으로 조회해보겠습니다. select 쿼리문 결과는 execute 리턴 값으로 받아올 수 있습니다.

select_query = 'select * from EX1;'
result = conn.execute(select_query)
for _r in result:
   print(_r)

그림3 데이터 조회 쿼리문 실행과 결과출력

 

3. 참고자료

https://leportella.com/sqlalchemy-tutorial/#creating-and-understanding-sessions

https://docs.sqlalchemy.org/en/13/core/connections.html#basic-usage

반응형