Verknüpfungen für mehrere Tabellen in einer einzigen SQLAlchemy-Abfrage
In SQLAlchemy können Sie durch das Verknüpfen von Tabellen Daten aus mehreren verbundenen Tabellen in einer einzigen kombinieren Ergebnissatz. Dies kann nützlich sein, wenn Sie Daten über Tabellen hinweg abfragen müssen, die Beziehungen haben, beispielsweise ein Benutzer mit mehreren Dokumenten.
Um mehrere Tabellen mit SQLAlchemy zu verknüpfen, können Sie die Methode „join()“ verwenden. Diese Methode benötigt zwei Argumente: Das erste Argument ist die Zieltabelle und das zweite Argument ist die Bedingung, die angibt, wie die Tabellen verknüpft werden.
Betrachten Sie beispielsweise die folgende Tabellenstruktur:
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"))
Um alle Dokumente und Berechtigungen für einen Benutzer mit der E-Mail-Adresse „[email protected]“ abzufragen, können Sie die folgende Abfrage verwenden:
q = session.query( User, Document, DocumentPermissions, ).filter( User.email == Document.author, ).filter( Document.name == DocumentPermissions.document, ).filter( User.email == 'someemail', ).all()
Diese Abfrage führt eine Verknüpfung zwischen den durch Benutzer-, Dokument- und DocumentsPermissions-Tabellen, die die Ergebnisse filtern, um nur Dokumente einzuschließen, die vom Benutzer mit der E-Mail-Adresse „someemail“ erstellt wurden. Das Ergebnis ist eine Liste von Tupeln, die die Benutzer-, Dokument- und Berechtigungsdaten enthalten.
Das obige ist der detaillierte Inhalt vonWie verbinde ich mehrere Tabellen in einer einzigen SQLAlchemy-Abfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!