ホームページ >データベース >mysql チュートリアル >SQLAlchemy で単一のクエリで複数のテーブルを効率的に結合するにはどうすればよいですか?

SQLAlchemy で単一のクエリで複数のテーブルを効率的に結合するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-05 00:09:41718ブラウズ

How to Efficiently Join Multiple Tables in SQLAlchemy with a Single Query?

1 つのクエリを使用した SQLAlchemy での複数のテーブルの結合

SQLAlchemy では、単一のクエリで複数のテーブルを結合することで効率的なデータ取得が可能になります。複数のテーブルを結合するには、データベース内のテーブルを表すクラス間の関係を定義する必要があります。

この場合、User、Document、DocumentsPermissions の 3 つのクラスがあります。これらのクラス間の関係を確立しましょう:

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"), nullable=False)

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

    document = Column(String, ForeignKey("documents.name"), nullable=False)

これらの関係により、単一のクエリを使用して目的のテーブルを取得できます:

query = session.query(User, Document, DocumentsPermissions) \
    .filter(User.email == Document.author) \
    .filter(Document.name == DocumentsPermissions.document) \
    .filter(User.email == "[email protected]") \
    .all()

このクエリは User、Document、DocumentsPermissions テーブルを結合します。関係によって検索し、電子メールに基づいて結果をフィルタリングします。最終結果は、説明したように、3 つのテーブルすべてのデータを含むタプルのリストになります。この方法を使用すると、単一のデータベース クエリで複数のテーブルからデータを効率的に取得できます。

以上がSQLAlchemy で単一のクエリで複数のテーブルを効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。