SQL Alchemy[1] - 개요 읽기
https://docs.sqlalchemy.org/en/14/intro.html 공식문서 따라하는 글
SQLAlchemy
를 사용하게되는 이유는 앞으로 사이드 프로젝트에서 사용해보자는 이야기가 나와서이다. 비동기로 처리하는 방법을 알아오라고 해서 이것 또한 document를 읽게 되었다.
☑️ 개요
SQL Toolkit
과 Objct Relational Mapper
가 Python
의 DataBase
환경에서도 잘 작동할 수 있게 도와주는 툴이다.
SQL Alchemy
는 여러가지 영역이 기능별로 구분되는데, 이 영역들은 개별적으로 사용되거나 혼합하여 사용할 수 있다.
SQL Alchemy
의 주로 구성되는 요소는 밑의 그림과 같다.
SQLAlchemy ORM
, SQLAlchemyCore
라는 두 영역이 있다.
Core
는 SQLAlchemy
의 SQL
의 중요 부분을 포함하고 있다. 또한, database
통합과 description services
를 제공한다. Core
의 가장 중요한 부분은 SQL Expression Language
라는 것이다.
☑️ SQL Expression Language
SQL Expression Language
는ORM
패키지에 의존적이지 않아 독립적이고, 컴파일 가능한 객체로 표현되는SQL
표현식을 구성하는 시스템을 제공한다.Inserts
,updates
와delete
는 각 문과 함께 사용할 매개 변수를 나타내는dictionaries
와 함께 이러한 문을 나타내는 SQL로 표현된 개체를 전달함으로써 수행된다.database schema
에 매핑된 도메일 모델이 동작되기 위해서ORM
은Core
기반으로 빌드를 하게 된다.ORM
을 사용하면 대부분의 경우에는Core
를 사용할때 동일한 방식으로SQL
표현식을 구성한다. 하지만 데이터베이스에 있는business objects
의 영속성을 나타내는DML
은unit of work
라는 패턴을 사용하여 변화 가능한 오브젝트에 대한 변환구문을 자동화한다.unit of work
라는 패턴은 가변 객체에 대한 상태 변화를INSERT
,UPDATE
,DELETE
구조체로 변환하는데, 그런 다음 사용자의 필요에 의해 호출 되어진다.SELECT
문은ORM
의 자동화와 객체중심의 쿼리에 의해 성능이 올라갔다.Core
의SQL Expression Language
에 의해 불변성을 중심으로 하는 프로그래밍 패러다임인 스키마 중심의 데이터베이스 뷰를 제공하는 반면,ORM
은 객체지향적이고 가변가능한 객체에 대해 효과적인 프로그래밍 패러다임을 가진 도메인 중심의 데이터베이스 뷰를 제공한다.관계형 데이터베이스는 가변이 가능한 서비스 이다. 때문에
ORM
은 상태지향적인것을 처리하니까Core/SQL Expression Language
는 명령지향적으로 처리한다.