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

Comment effectuer une seule requête SQLAlchemy joignant plusieurs tables ?

Susan Sarandon
Libérer: 2024-12-28 17:06:10
original
598 Les gens l'ont consulté

How to Perform a Single SQLAlchemy Query Joining Multiple Tables?

Joindre plusieurs tables dans SQLAlchemy avec une seule requête

Pour exécuter une opération de jointure complète impliquant plusieurs tables dans SQLAlchemy, il est essentiel de suivre une approche spécifique. Considérez les classes mappées SQLAlchemy fournies :

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 résultat dans le format souhaité pour un utilisateur spécifique, suivez ces étapes :

  1. Commencez par interroger les tables nécessaires à l'aide du fonction de requête :
q = Session.query(
    User, Document, DocumentPermissions
)
Copier après la connexion
  1. Établir des relations entre les tables à l'aide du filtre méthode :
q.filter(
    User.email == Document.author
)
Copier après la connexion
  1. Incluez des relations supplémentaires si nécessaire :
q.filter(
    Document.name == DocumentPermissions.document
)
Copier après la connexion
  1. Spécifiez la condition de filtrage en fonction de l'e-mail de l'utilisateur souhaité :
q.filter(
    User.email == 'someemail'
)
Copier après la connexion
  1. Enfin, exécutez la requête en utilisant la méthode all pour récupérer le résultats.

En suivant cette approche, il devient possible de joindre efficacement plusieurs tables à l'aide d'une seule requête SQLAlchemy.

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