Wenn ich eine SQLAlchemy-ORM-Abfrage habe:
%Vor%Ist es möglich, die von dieser Abfrage zurückgegebenen Spalten zu ändern?
Zum Beispiel, damit ich nur die Spalte User.id
auswählen und diese in einer Unterabfrage verwenden kann:
Hinweis: Die .values()
-Methode funktioniert nicht, da sie die Abfrage ausführt und eine iterierbare Ergebnismenge zurückgibt (also führt z. B. EmailAddress.user_id.in_(admin_users.values(User.id))
zwei Abfragen aus, nicht eine).
Ich weiß, dass ich die erste Abfrage als Session.query(User.id)
ändern könnte, aber ich frage mich genau, wie ich die von einer Abfrage zurückgegebenen Spalten ändern könnte.
Unter der Annahme, dass Ihre Address.user_id
eine ForeignKey
definiert, wird die folgende Abfrage die Aufgabe effizienter ausführen als IN
operator:
Wenn Sie keinen ForeignKey haben (obwohl Sie sollten), können Sie die join
Bedingung explizit angeben:
Aber wenn du es wirklich mit in_
operator machen möchtest, hier gehts (beachte subquery
):
Tags und Links python sqlalchemy orm