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

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

Mary-Kate Olsen
Libérer: 2025-01-05 00:09:41
original
787 Les gens l'ont consulté

How to Efficiently Join Multiple Tables in SQLAlchemy with a Single Query?

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)
Copier après la connexion

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()
Copier après la connexion

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!

Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal