하드웨어

SQLAlchemy
하드웨어
원저작자마이클[1][2] 바이어
초기 릴리즈2006년 2월 14일, 16년 전(2006-02-14)[3]
안정된 릴리스
1.4.40 / 2022년 8월 8일; 하루 전(2022-08-08)[4]
저장소
기입처파이썬
운영 체제크로스 플랫폼
유형객체-관계 매핑
면허증.MIT 라이선스[5]
웹 사이트www.sqlalchemy.org Edit this on Wikidata
Mike Bayer가 PyCon 2012에서 SQL Chemy에 대해 언급

SQL Chemy는 MIT [5]라이센스에 따라 출시된 Python 프로그래밍 언어용 오픈 소스 SQL 툴킷 및 객체 관계 매퍼(ORM)입니다.

묘사

SQLAlchemy의 철학은 관계형 데이터베이스가 규모가 커지고 성능이 우려되기 시작할수록 객체 컬렉션과 덜 비슷해지는 반면 객체 컬렉션은 더 많은 추상화가 설계될수록 테이블과 행과 덜 비슷하다는 것입니다.이 때문에, 다른 오브젝트 관계 매퍼에 [6]의해서 사용되고 있는 액티브한 레코드 패턴이 아니고, 데이터 매퍼 패턴(Java 의 경우는 Hibernate 와 유사)을 채용하고 있습니다.

역사

SQL Chemy는 2006년 2월에[3] 처음 출시되었습니다.

다음 예시는 영화와 감독의 n-to-1 관계를 나타내고 있습니다.사용자 정의 Python 클래스가 대응하는 데이터베이스 테이블을 생성하는 방법, 관계의 양쪽에서 관계를 가진 인스턴스가 생성되는 방법, 마지막으로 데이터를 쿼리하는 방법을 보여 줍니다.이로 인해 자동 생성된 SQL 쿼리는 게으름과 고속 로딩 모두에 대해 모두 알 수 있습니다.

스키마 정의

DBMS에서 두 개의 Python 클래스 및 해당 데이터베이스 테이블 만들기:

부터 squalchemy 수입품 * 부터 sqlalchemy.ext.reventive 수입품 선언적 베이스 부터 sqlalchemy.orm 수입품 관계., 세션 메이커  기초 = 선언적 베이스()  학급 영화.(기초):     __tablename__ = "실패"      아이디 = 기둥.(정수, 프라이머리 키=진실의)     직함 = 기둥.(스트링(255), 무효로 할 수 있다=거짓의)     연도 = 기둥.(정수)     지시필 = 기둥.(정수, 외부 키("directors.id"))      감독. = 관계.('디렉터', 백레프="실패", 게으른=거짓의)      방어하다 __init__(자신, 직함=없음., 연도=없음.):         자신.직함 = 직함         자신.연도 = 연도      방어하다 __repr__(자신):         돌아가다 무비(%r,%r,%r)" % (자신.직함, 자신.연도, 자신.감독.)  학급 감독.(기초):     __tablename__ = "실패"      아이디 = 기둥.(정수, 프라이머리 키=진실의)     이름. = 기둥.(스트링(50), 무효로 할 수 있다=거짓의, 독특한=진실의)      방어하다 __init__(자신, 이름.=없음.):         자신.이름. = 이름.      방어하다 __repr__(자신):         돌아가다 "디렉터(Director)%r)" % (자신.이름.)  엔진 = create_engine("dbms://user: pwd@host/dbname") 기초.메타데이터.create_all(엔진) 

데이터 삽입

다음 중 하나의 엔티티를 통해 감독과 영화의 관계를 삽입할 수 있습니다.

세션 = 세션 메이커(묶다=엔진) 세션 = 세션()  m1 = 영화.('로보캅', 1987) m1.감독. = 감독.(폴 버호벤)  d2 = 감독.(조지 루카스) d2.무비 = [영화.(스타워즈, 1977), 영화.('THX 1138', 1971)]  해라:     세션.더하다(m1)     세션.더하다(d2)     세션.저지르다() 제외하고:     세션.롤백() 

쿼리

모든 데이터 = 세션.질문하다(영화.).모든.() 위해서 소메다타  모든 데이터:     인쇄물(소메다타) 

SQL Chemy는 다음 쿼리를 DBMS에 발행합니다(에일리어스 생략).

선택한다. 무비.아이디, 무비.직함, 무비.연도, 무비.지시필, 디렉터.아이디, 디렉터.이름. 부터 무비 왼쪽 외부 합류하다 디렉터  디렉터.아이디 = 무비.지시필 

출력:

영화.('로봇캅, 1987L, 감독.('폴 버호벤')) 영화.(스타워즈, 1977L, 감독.(조지 루카스)) 영화.('THX 1138', 1971L, 감독.(조지 루카스)) 

설정lazy=True(기본값) 대신 SQLLchemy는 먼저 영화 목록을 가져오는 쿼리를 발행하고 각 감독에 대해 필요한 경우에만(느긋하게) 대응하는 감독의 이름을 얻는 쿼리를 발행합니다.

선택한다. 무비.아이디, 무비.직함, 무비.연도, 무비.지시필 부터 무비  선택한다. 디렉터.아이디, 디렉터.이름. 부터 디렉터 어디에 디렉터.아이디 = %s 

「 」를 참조해 주세요.

레퍼런스

  1. ^ Mike Bayer는 SQL Chemy와 Python용 Mako Templates의 제작자입니다.
  2. ^ 인터뷰 Mike Bayer SQL Chemy #pydata #python
  3. ^ a b "Download - SQLAlchemy". SQLAlchemy. Retrieved 21 February 2015.
  4. ^ "Releases - sqlalchemy/sqlalchemy". Retrieved 8 August 2022 – via GitHub.
  5. ^ a b "zzzeek / sqlalchemy / source / LICENSE". BitBucket. Retrieved 21 February 2015.
  6. ^ 오픈 소스 애플리케이션 아키텍처
메모들

외부 링크