ホームページ >データベース >mysql チュートリアル >SQLAlchemy で単一のクエリで複数のテーブルを効率的に結合するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。