python SQLAlchemy 의 Engine 상세 설명
3278 단어 pythonsqlalchemyengine
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 의 다른 연결 과 도 회 수 됩 니 다.
참조 링크:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.