본문 바로가기

반응형

Tech/SQLAlchemy

(4)
[SQLAlchemy] imperative mapping SQLAlchemy 의 ORM 기능을 사용하기 위해서는 DB 의 테이블과 애플리케이션의 클래스를 매핑해야 한다. SQLAlchemy 에서는 테이블과 클래스를 매핑하는 방법으로 두가지 방법을 제공해준다. 하나는 Declarative Mapping, 다른 하나는 Imperative Mapping 이다. Declarative Mapping 은 클래스를 구현할 때 SQLAlchemy 의 DeclarativeBase 를 상속받음으로 명시적으로 ORM 에 의해 매핑될 클래스로 선언하는 방법이다. 반면에 Imperative Mapping 은 일반 클래스를 SQLAlchemy 의 Table 객체를 registry 에 매핑하여 등록함으로써 해당 클래스와 테이블을 매핑시켜주는 방식이다. 프로그램을 구현하면서 파이썬 클래스..
[SQLAlchemy] Relationship - CASCADE SQLAlchemy 를 사용하면 여러 테이블간의 relationship 을 생성하여 운영할 수 있다. 테이블들의 relationship 다루어 운영을 하다보면 하나의 테이블에 대한 동작이 다른 테이블에 영향을 주는 경우가 발생한다. 이러한 경우 DB 를 다루기 위해 복잡하고 반복적인 작업이 필요할 수 있다. SQLAlchemy 에서는 관계가 맺어진 객체들간의 작업을 간편하고 자동화하기 위한 "relationship cascade" 라는 기능을 제공한다. 이 기능을 사용하면 relationship 을 가진 테이블간에 어떻게 동작할 것인지, 어떻게 영향을 끼칠 것인지를 정의할 수 있다. 1. Cascade 란? Cascade 는 SQLAlchemy ORM 기능으로 객체들간의 관계를 정의할 때 사용할 수 있는..
[SQLAlchemy] 연관관계 설정 ORM 에서는 매핑된 객체들이 서로를 참조하는 구조를 연관관계를 통해서 표현한다. SQLAlchemy 에서는 relationship() 메서드를 사용하여 매핑된 모델 클래스를 정의할 때 연관관계를 표현한다. 연관관계는 1대1, 1대N, N대1, N대M 등의 구조로 이루어져 있다. 1. sqlalchemy.orm.relationship SQLAlchemy 에서는 relationship() 메서드를 사용하여 두 객체 클래스의 연관관계를 지정한다. relationship() 메서드에 연관관계를 맺으려는 클래스의 이름을 입력하여 참조 객체를 생성한다. from sqlalchemy.orm import relationship class User(Base): __tablename__ = "user" # ... tea..
[SQLAlchemy] SQLAlchemy 기본 설명 SQLAlchemy 는 파이썬의 ORM 라이브러리 중 하나이다. 이 글에서는 SQLAlchemy 의 Quick Start 내용을 기반으로 SQLAlchemy 의 기본적인 내용들을 기술한다. 1. Database 연결 - Engine Engine 은 SQLAlchemy 라이브러리의 시작점이다. SQLAlchemy 의 Pool 과 Dialect 기능을 사용하여 실제 Database 에 접근하고 DB API 를 사용할 수 있도록 해준다. 여기서 Pool 은 DB Connection Pool 을 추상화한 클래스로 connect() 를 통해서 DBAPI 연결을 생성한다. Dialect 는 SQLAlchemy 를 여러 종류의 database 와 DB API 들과 연동하여 사용할 수 있도록 하는 역할을 한다. 각 d..

반응형