> 데이터 베이스 > MySQL 튜토리얼 > SQLAlchemy에서 여러 테이블(사용자, 문서, 권한)을 효율적으로 조인하려면 어떻게 해야 합니까?

SQLAlchemy에서 여러 테이블(사용자, 문서, 권한)을 효율적으로 조인하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2025-01-01 03:11:10
원래의
274명이 탐색했습니다.

How Can I Efficiently Join Multiple Tables (Users, Documents, Permissions) in SQLAlchemy?

SQLAlchemy에서 여러 테이블 조인

SQLAlchemy에서 테이블을 조인하면 여러 관련 엔터티의 데이터를 결합할 수 있습니다. 이를 설명하기 위해 다음 예를 고려하십시오.

사용자, 문서 및 문서 권한을 나타내는 다음과 같은 매핑된 클래스가 있다고 가정합니다.

class User(Base):
    __tablename__ = 'users'
    email = Column(String, primary_key=True)
    name = Column(String)

class Document(Base):
    __tablename__ = "documents"
    name = Column(String, primary_key=True)
    author = Column(String, ForeignKey("users.email"))

class DocumentsPermissions(Base):
    __tablename__ = "documents_permissions"
    readAllowed = Column(Boolean)
    writeAllowed = Column(Boolean)

    document = Column(String, ForeignKey("documents.name"))
로그인 후 복사

사용자에 대한 정보가 포함된 테이블을 검색하려면, 특정 사용자에 대한 문서 및 문서 권한에 대해 다음 쿼리를 사용할 수 있습니다.

q = Session.query(
         User, Document, DocumentPermissions,
    ).filter(
         User.email == Document.author,
    ).filter(
         Document.name == DocumentPermissions.document,
    ).filter(
        User.email == 'someemail',
    ).all()
로그인 후 복사

이것은 쿼리:

  1. 이메일 열과 작성자 열 간의 관계를 기반으로 User 테이블을 Document 테이블과 조인합니다.
  2. 이메일 열과 작성자 열 간의 관계를 기반으로 Document 테이블을 DocumentsPermissions 테이블과 조인합니다. 이름 열.
  3. 이 테이블에서 User.email이 지정된 값('someemail')과 동일한 행만 포함하도록 결과를 필터링합니다. 예.

이 쿼리를 실행하면 단일 요청으로 세 개의 관련 테이블에서 모든 관련 정보를 효율적으로 검색하여 지정된 사용자와 관련된 데이터에 대한 포괄적인 보기를 제공할 수 있습니다.

위 내용은 SQLAlchemy에서 여러 테이블(사용자, 문서, 권한)을 효율적으로 조인하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿