Maison >base de données >tutoriel mysql >Comment joindre plusieurs tables dans une seule requête SQLAlchemy ?
Jointures pour plusieurs tables dans une seule requête SQLAlchemy
Dans SQLAlchemy, la jointure de tables vous permet de combiner les données de plusieurs tables liées en une seule ensemble de résultats. Cela peut être utile lorsque vous devez interroger des données sur des tables qui ont des relations, comme un utilisateur avec plusieurs documents.
Pour joindre plusieurs tables à l'aide de SQLAlchemy, vous pouvez utiliser la méthode join(). Cette méthode prend deux arguments : le premier argument est la table cible et le deuxième argument est la condition qui spécifie comment les tables sont jointes.
Par exemple, considérons la structure de table suivante :
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"))
Pour interroger tous les documents et autorisations d'un utilisateur avec l'e-mail "[email protected]", vous pouvez utiliser la requête suivante :
q = session.query( User, Document, DocumentPermissions, ).filter( User.email == Document.author, ).filter( Document.name == DocumentPermissions.document, ).filter( User.email == 'someemail', ).all()
Cette requête effectue une jointure entre les Tables User, Document et DocumentsPermissions, filtrant les résultats pour inclure uniquement les documents créés par l'utilisateur avec l'e-mail « someemail ». Le résultat est une liste de tuples contenant les données de l'utilisateur, du document et des autorisations.
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!