Maison >base de données >tutoriel mysql >Comment joindre plusieurs tables dans une seule requête SQLAlchemy ?

Comment joindre plusieurs tables dans une seule requête SQLAlchemy ?

DDD
DDDoriginal
2024-12-30 10:45:111003parcourir

How to Join Multiple Tables in a Single SQLAlchemy Query?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn