python SQLAlchemy 의 Engine 상세 설명

이 그림 을 먼저 보 세 요.이것 은 공식 사이트 에서 떼 어 낸 것 입 니 다.

Engine 은 엔진 이라는 뜻 으로 자동 차 는 엔진 을 통 해 구동 되 고 SQLAlchemy 는 Engine 을 통 해 구동 되 며 Engine 은 연결 풀(Pool)대상 과 방언(Dialect)을 유지 했다.사투 리 는 쉽게 말 하면 MySQL 이 냐 Oracle 이 냐 PostgreSQL 이 냐 다른 데이터베이스 냐 하 는 것 이다.사투리(Dialect)에 대한 소 개 는 다른 글 에 소개 되 어 있 으 니 참고 할 수 있다데이터베이스 방언 방언 방언
연결 풀 은 매우 중요 합 니 다.sql 조 회 를 보 낼 때마다 먼저 연결 을 만들어 야 하기 때 문 입 니 다.프로그램 이 시 작 될 때 미리 연결 풀 을 초기 화하 고 사용 할 때마다 연결 풀 을 다시 놓 아 다른 요청 에 사용 하면 조회 의 효율 을 크게 향상 시 킬 수 있 습 니 다.
엔진 초기 화
Engine 의 초기 화 는 매우 간단 합 니 다.공장 함수 createengine 를 만 들 수 있 습 니 다.

from sqlalchemy import create_engine

engine = create_engine('mysql://user:password@localhost:3306/test?charset=utf8mb4')
Engine 대상 을 구축 하 는 동시에 연결 탱크 와 Dialect 도 만 들 었 습 니 다.그러나 이 럴 때 는 데이터베이스 와 진정한 연결 을 만 들 지 않 습 니 다.Engine.connect()나 Engine.execute(sql)를 호출 하여 SQL 요청 을 수행 할 때 만 진정한 연결 을 만 들 수 있 습 니 다.따라서 Engine 과 Pool 의 행 위 를 지연 초기 화 라 고 하 는데,현재 유행 하 는 말로 만족 감 을 늦 추 는 것 이 고,진정 으로 도움 이 될 때 만 연결 을 만 드 는 것 이다.
주의해 야 할 것 은 엔진 을 만 들 때 데이터베이스 의 암호 에 특수 문자 가 포함 되 어 있 으 면 먼저 인 코딩 처리 가 필요 하 다 는 것 이다.

>>> import urllib.parse
>>> urllib.parse.quote_plus("kx%jj5/g")
'kx%25jj5%2Fg'
기타 데이터베이스 방언 에서 engine 를 초기 화 하 는 방식 은 참고 할 수 있 습 니 다공식 문서
create_engine 는 아직도 선택 할 수 있 는 매개 변수 가 많 습 니 다.여기 서 몇 가지 중요 한 매개 변 수 를 소개 합 니 다.

engine = create_engine('mysql://user:password@localhost:3306/test?charset=utf8mb4',
   echo=False
   pool_size=100,
   pool_recycle=3600,
   pool_pre_ping=True)
echo:True 를 위해 sql 문 구 를 인쇄 합 니 다.물론 logger 설정 을 통 해 출력 을 제어 할 수 있 습 니 다.여 기 는 토론 하지 않 습 니 다.
pool_size:연결 탱크 의 크기 입 니 다.기본 값 은 5 개 입 니 다.0 은 연결 수가 제한 이 없 음 을 표시 합 니 다.
pool_recycle:MySQL 은 기본적으로 8 시간 동안 연결 되 어 있 는 내용 이 동작(조회 요청)이 없 으 면 자동 으로 링크 가 끊 기 고 MySQL has gone away 오류 가 발생 합 니 다.pool 설정재 활용 후 SQLAlchemy 는 지 정 된 시간 내 에 연결 을 회수 합 니 다.3600 으로 설정 하면 1 시간 후에 이 연결 이 자동 으로 회수 된다 는 뜻 이다.
pool_pre_ping:이것 은 1.2 에 추 가 된 매개 변수 입 니 다.값 이 True 라면 연결 풀 에서 연결 을 가 져 올 때마다 데이터베이스 에 select 1 과 유사 한 테스트 조회 문 구 를 보 내 서버 가 정상적으로 작 동 하 는 지 판단 합 니 다.이 연결 에 disconnect 가 발생 하면 이 연결 은 pool 의 다른 연결 과 도 회 수 됩 니 다.
참조 링크:
  • https://docs.sqlalchemy.org/en/14/core/engines.html#database-urls
  • https://stackoverflow.com/questions/34322471/sqlalchemy-engine-connection-and-session-difference
  • https://docs.sqlalchemy.org/en/13/core/pooling.html#dealing-with-disconnects
  • 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기