SQLAlchemy
Python SQL 툴킷 및 객체 관계형 매퍼
소개
SQLAlchemy는 애플리케이션 개발자에게 SQL의 모든 기능과 유연성을 제공하는 Python SQL 도구 키트이자 개체 관계형 매퍼입니다. SQLAlchemy는 효율적이고 고성능 데이터베이스 액세스를 위해 설계되었으며 간단한 Python 도메인 언어에 맞게 조정된 잘 알려진 엔터프라이즈 수준 지속성 패턴의 전체 제품군을 제공합니다.
주요 SQLAlchemy 기능은 다음과 같습니다.
- ID 맵, 작업 단위 및 데이터 매퍼 패턴의 핵심으로 구축된 업계 최고의 ORM입니다. 이러한 패턴을 사용하면 선언적 구성 시스템을 사용하여 객체의 투명한 지속성을 허용합니다. 도메인 모델을 자연스럽게 구성하고 조작할 수 있으며 변경 사항은 현재 트랜잭션과 자동으로 동기화됩니다.
- 개체 모델 측면에서 조인, 하위 쿼리, 상관 관계 및 대부분의 모든 것을 포함하여 SQL의 전체 기능을 명시적으로 노출하는 관계 지향 쿼리 시스템입니다. ORM을 사용하여 쿼리를 작성하면 SQL을 작성할 때 사용하는 것과 동일한 관계형 구성 기술이 사용됩니다. 언제든지 리터럴 SQL을 사용할 수 있지만 실제로는 전혀 필요하지 않습니다.
- 관련 컬렉션 및 개체에 대한 포괄적이고 유연한 즉시 로딩 시스템입니다. 컬렉션은 세션 내에서 캐시되며 개별 액세스 시 조인을 사용하여 한 번에 로드하거나 전체 결과 집합에 대한 컬렉션당 쿼리를 통해 로드할 수 있습니다.
- 핵심 SQL 구성 시스템 및 DBAPI 상호 작용 계층. SQLAlchemy Core는 ORM과 별개이며 그 자체로 완전한 데이터베이스 추상화 계층이며 확장 가능한 Python 기반 SQL 표현 언어, 스키마 메타데이터, 연결 풀링, 유형 강제 및 사용자 정의 유형을 포함합니다.
- 모든 기본 및 외래 키 제약 조건은 복합적이고 자연적인 것으로 가정됩니다. 물론 대리 정수 기본 키는 여전히 표준이지만 SQLAlchemy는 이 모델을 가정하거나 하드코딩하지 않습니다.
- 데이터베이스 자체 검사 및 생성. 데이터베이스 스키마는 데이터베이스 메타데이터를 나타내는 Python 구조에 한 단계로 "반영"될 수 있습니다. 그러면 동일한 구조가 ORM과 관계없이 Core 내에서 모두 CREATE 문을 바로 생성할 수 있습니다.
SQLAlchemy의 철학:
- SQL 데이터베이스는 점점 더 개체 컬렉션처럼 작동하지 않으며 크기와 성능이 중요해지기 시작합니다. 객체 컬렉션은 점점 더 추상화가 중요해질수록 테이블이나 행과 덜 유사하게 동작합니다. SQLAlchemy는 이러한 원칙을 모두 수용하는 것을 목표로 합니다.
- ORM은 "R"을 숨길 필요가 없습니다. 관계형 데이터베이스는 완전히 공개되어야 하는 풍부한 집합 기반 기능을 제공합니다. SQLAlchemy의 ORM은 개발자가 도메인 모델과 관계형 스키마 사이에 사용자 정의 중재 계층을 구성하여 소위 "객체 관계형 임피던스" 문제를 먼 기억으로 전환할 수 있는 개방형 패턴 세트를 제공합니다.
- 모든 경우에 개발자는 개체 모델과 관계형 스키마 모두의 디자인, 구조 및 명명 규칙에 관한 모든 결정을 내립니다. SQLAlchemy는 이러한 결정의 실행을 자동화하는 수단만 제공합니다.
- SQLAlchemy를 사용하면 "ORM이 잘못된 쿼리를 생성했습니다"와 같은 일이 없습니다. 조인 구성 방법, 하위 쿼리 및 상관 관계 사용 방법, 요청되는 열을 포함하여 쿼리 구조에 대한 모든 권한을 보유합니다. SQLAlchemy가 수행하는 모든 작업은 궁극적으로 개발자가 시작한 결정의 결과입니다.
- 문제에 ORM이 필요하지 않은 경우 ORM을 사용하지 마세요. SQLAlchemy는 핵심 구성 요소와 별도의 ORM 구성 요소로 구성됩니다. Core는 대상 데이터베이스의 SQL 문자열로 직접 렌더링하여 본질적으로 향상된 DBAPI 커서인 결과 집합을 반환하는 SQL 구문의 Pythonic 구성을 허용하는 전체 SQL 표현 언어를 제공합니다.
- 거래가 표준이 되어야 합니다. SQLAlchemy의 ORM을 사용하면 commit()이 호출될 때까지 아무 것도 영구 저장소에 저장되지 않습니다. SQLAlchemy는 애플리케이션이 일련의 작업의 시작과 끝을 설명하는 일관된 수단을 만들도록 권장합니다.
- SQL 문에서 리터럴 값을 렌더링하지 마세요. 바인딩된 매개 변수는 최대한 많이 사용되므로 쿼리 최적화 프로그램이 쿼리 계획을 효과적으로 캐시하고 SQL 주입 공격이 문제가 되지 않도록 합니다.
선적 서류 비치
최신 문서는 다음 위치에 있습니다.
https://www.sqlalchemy.org/docs/
설치/요구사항
설치에 대한 전체 설명서는 설치에 있습니다.
도움 받기 / 개발 / 버그 보고
SQLAlchemy 커뮤니티 가이드를 참조하세요.
행동 강령
무엇보다도 SQLAlchemy는 사용자와 개발자 간의 정중하고 사려 깊으며 건설적인 의사소통을 매우 강조합니다. 행동 강령에서 당사의 현재 행동 강령을 참조하십시오.
특허
SQLAlchemy는 MIT 라이선스에 따라 배포됩니다.