単一 SQLAlchemy クエリでの複数のテーブルの結合
SQLAlchemy では、テーブルを結合することで、複数の関連テーブルのデータを 1 つの単一のテーブルに結合できます。結果セット。これは、複数のドキュメントを持つユーザーなど、リレーションシップのあるテーブル全体でデータをクエリする必要がある場合に便利です。
SQLAlchemy を使用して複数のテーブルを結合するには、join() メソッドを使用できます。このメソッドは 2 つの引数を受け取ります。最初の引数はターゲット テーブルで、2 番目の引数はテーブルの結合方法を指定する条件です。
たとえば、次のテーブル構造を考えてみましょう:
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"))
電子メール「[email protected]」を持つユーザーのすべてのドキュメントと権限をクエリするには、次のクエリを使用できます:
q = session.query( User, Document, DocumentPermissions, ).filter( User.email == Document.author, ).filter( Document.name == DocumentPermissions.document, ).filter( User.email == 'someemail', ).all()
このクエリUser、Document、DocumentsPermissions テーブル間の結合を実行し、電子メール「someemail」を使用してユーザーによって作成されたドキュメントのみが含まれるように結果をフィルタリングします。結果は、ユーザー、ドキュメント、および権限データを含むタプルのリストです。
以上が単一の SQLAlchemy クエリで複数のテーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。