Maison >base de données >tutoriel mysql >Comment joindre efficacement plusieurs tables dans SQLAlchemy avec une seule requête ?
Joindre plusieurs tables dans SQLAlchemy à l'aide d'une seule requête
SQLAlchemy permet une récupération efficace des données en joignant plusieurs tables avec une seule requête. Pour joindre plusieurs tables, cela nécessite de définir des relations entre les classes représentant les tables de votre base de données.
Dans votre cas, vous disposez de trois classes : User, Document et DocumentsPermissions. Établissons des relations entre ces classes :
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)
Avec ces relations, vous pouvez récupérer la table souhaitée à l'aide d'une seule requête :
query = session.query(User, Document, DocumentsPermissions) \ .filter(User.email == Document.author) \ .filter(Document.name == DocumentsPermissions.document) \ .filter(User.email == "[email protected]") \ .all()
Cette requête rejoint les tables User, Document et DocumentsPermissions par leurs relations et filtre les résultats en fonction du courrier électronique. Le résultat final sera une liste de tuples contenant les données des trois tables, comme vous l'avez décrit. En utilisant cette méthode, vous pouvez récupérer efficacement les données de plusieurs tables avec une seule requête de base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!