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"))
Pour récupérer un résultat dans le format souhaité pour un utilisateur spécifique, suivez ces étapes :
q = Session.query( User, Document, DocumentPermissions )
q.filter( User.email == Document.author )
q.filter( Document.name == DocumentPermissions.document )
q.filter( User.email == 'someemail' )
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!