Programming Language/Python

[SQLAlchemy] 1. Engine

LeeJaeJun 2024. 6. 22. 11:00
728x90
반응형

Engine

  • SQLAlchemy application에서 데이터를 연결하기 위한 객체
  • 특정 데이터베이스에 대한 연결의 중앙소스로 작동
  • 데이터베이스 연결을 위한 factory 역할과 connectection pool 제공
  • 일반적으로 특정 데이터베이스에 서버에 대해서 한 번만 전역 객체로 생성
  • create_engine() 함수로 생성
  • PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server 등 여러 데이터베이스를 지원함
# SQLite 연결 예시
from sqlalchemy import create_engine
engine = create_engine("sqlite+pysqlite:///:memory:", echo=True)
  • dialect+driver://username:password@host:port/database 형식
    • username:password@host:port가 생략될 수도 있음
      • 생략 시 dialect+driver:///database와 같은 형태
      • SQLite와 같은 파일 기반 데이터베이스는 로컬 파일 시스템에 파일을 생성하여 사용하기에 네트워크를 통해 접근할 필요가 없어서 username, password, host, port가 필요하지 않음
      • 메모리 내에서만 존재하는 임시 데이터베이스의 경우에도 네트워크 정보가 필요하지 않음
    • dialect+driver: 사용할 데이터베이스와 DBAPI 드라이버를 지정
    • username: 데이터베이스에 접속하기 위한 사용자명과 비밀번호
    • host: 데이터베이스 서버의 호스트 이름 또는 IP 주소
    • port: 데이터베이스 서버가 사용하는 포트 번호
    • database: 연결할 데이터베이스의 이름 또는 경로
  • sqlite+pysqlite:///:memory:
    • sqlite(dialect): SQLite 데이터베이스와 통신하겠다
    • +: SQLAlchemy URL에서 dialect와 DBAPI Driver 구분하는 역할 (DBAPI Driver 생략시 사용 x)
    • pysqlite(DBAPI Driver): SQLAlchemy가 데이터베이스와 상호작용하기 위해서 사용하는 Python 인터페이스 (생략 가능)
      • pysqlite는 Python의 SQLite 데이터베이스를 위한 표준 라이브러리인 sqlite3 모듈을 의미
      • SQLAlchemy는 pysqlite를 통해 SQLite 데이터베이스와 통신
      • 생략 시, SQLAlchemy는 사용할 데이터베이스에 대한 기본 DBAPI 사용
    • 첫 번째 슬래시 (//): 표준 URL 형식에 맞추기 위해 사용
    • 경로 구분 슬래시(/): 데이터베이스 파일의 위치를 나타냄. /memory:은 메모리 전용 데이터베이스를 사용하고 있음을 나타냄
  • Lazy Connecting
    • SQLAlchemy에서 create_engine() 함수를 호출하여 엔진 객체를 생성할 때, 실제로는 데이터베이스와 즉시 연결되지 않음
    • 데이터베이스와의 연결은 엔진 객체가 처음으로 실제 데이터베이스 작업(ex 쿼리 실행)을 수행할 때 이루어짐

 

DBAPI

  • Python 프로그램이 다양한 데이터베이스와 상호 작용할 수 있도록 도와주는 표준 인터페이스
  • Python 코드가 데이터베이스와 소통할 수 있게 해주는 번역기 역할
    • 여기서는 SQLAlchemy가 여러 데이터베이스와 상호작용할 수 있도록 지원하는 다리 역할
  • 주요 기능
    • 연결 (Connection): 데이터베이스 서버에 연결을 설정
    • 커서 (Cursor): 데이터베이스에서 SQL 쿼리를 실행하고, 결과를 가져오는 데 사용
    • 트랜잭션 관리 (Transaction Management): 여러 SQL 명령을 하나의 단위로 묶어서 실행하고, 필요에 따라 롤백 가능
    • 에러 처리 (Error Handling): 데이터베이스 작업 중 발생하는 오류를 처리
728x90
반응형