Maison > base de données > tutoriel mysql > Comment puis-je joindre efficacement plusieurs tables (utilisateurs, documents, autorisations) dans SQLAlchemy ?

Comment puis-je joindre efficacement plusieurs tables (utilisateurs, documents, autorisations) dans SQLAlchemy ?

Patricia Arquette
Libérer: 2025-01-01 03:11:10
original
275 Les gens l'ont consulté

How Can I Efficiently Join Multiple Tables (Users, Documents, Permissions) in SQLAlchemy?

Joindre plusieurs tables dans SQLAlchemy

Dans SQLAlchemy, la jonction de tables permet la combinaison de données de plusieurs entités liées. Pour illustrer cela, prenons l'exemple suivant :

Supposons que vous disposiez des classes mappées suivantes représentant les utilisateurs, les documents et les autorisations de documents :

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

Pour récupérer un tableau qui inclut des informations sur les utilisateurs, documents et les autorisations de document pour un utilisateur spécifique, 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()
Copier après la connexion

Ceci requête :

  1. Joint la table User à la table Document en fonction de la relation entre les colonnes email et author.
  2. Joint la table Document à la table DocumentsPermissions en fonction de la relation entre les colonnes colonne de nom dans les deux tableaux.
  3. Filtre les résultats pour inclure uniquement les lignes où User.email est égal à une valeur spécifiée (« someemail ») dans cette exemple.

En exécutant cette requête, vous pouvez récupérer efficacement toutes les informations pertinentes des trois tables associées en une seule requête, fournissant une vue complète des données relatives à l'utilisateur spécifié.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal