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()
This query:
このクエリを実行すると、1 回のリクエストで 3 つの関連テーブルからすべての関連情報を効率的に取得でき、指定されたメールに関連するデータの包括的なビューが提供されます。ユーザー。
以上がSQLAlchemy で複数のテーブル (ユーザー、ドキュメント、権限) を効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。