SQLAlchemie Ordnung durch Hybrid-Eigenschaft, die Verweise Beziehung

Meine SQLAlchemy Modelle:

class Cover(db.Model): # ... a bunch of other fields ... @hybrid_property def number_of_requests(self): if self.requests: return len(self.requests) return 0 @number_of_requests.expression def number_of_requests(cls): return func.count(cls.requests) class Request(db.Model): # ... a bunch of other fields ... # Cover that this request is requesting cover_id = db.Column(db.Integer, db.ForeignKey('cover.id') cover = db.relationship('Cover', backref=backref("requests", cascade="all, delete-orphan")) 

Also, eine einfache Eins-zu-Viele-Beziehung zwischen Cover und Request. Die Hybrid-Eigenschaft number_of_requests sollte die Anzahl der Anfragen zurückgeben, die mit dieser bestimmten Abdeckung verknüpft sind.

Jetzt, in einem meiner Flask-Routen, versuche ich, die Top 5 Covers nach Anzahl der Requests zu packen. Hier ist das, was jetzt so aussieht:

 # Get top cover requests covers = Cover.query.order_by(Cover.number_of_requests).limit(5).all() 

Leider gibt es das

ProgrammingError: (ProgrammingError) fehlt FROM-Klauseleintrag für Tabelle "Anfrage"

Ich vermute, das ist, weil in number_of_requests(cls) Ich versuche, die Größe der requests Liste zu zählen, aber SQLAlchemy hat nicht die Anforderung Tabelle in der ursprünglichen Abfrage enthalten. Irgendwelche Ideen, wie man das macht, um diesen Fehler zu vermeiden?

One Solution collect form web for “SQLAlchemie Ordnung durch Hybrid-Eigenschaft, die Verweise Beziehung”

Ändern Sie Ihren expression zu:

 @number_of_requests.expression def number_of_requests(cls): return (select([func.count(Request.id)]) .where(Request.cover_id == cls.id)) 

Und lesen Sie Correlated Subquery Relationship Hybrid erneut.

  • Wie komme ich nach zahlreicher Vielfalt in SQLAlchemy?
  • Konnte den Dialekt für SQlite nicht ermitteln, nach dem Flaschen-Tutorial
  • SQLAlchemy - Durchführen einer Bulk-upsert (falls vorhanden, Update, sonst einfügen) in postgresql [duplicate]
  • Mit verschiedenen Bindungen in der gleichen Klasse in Flask-SQLAlchemy
  • SQLAlchemy links mit Unterabfrage
  • Kann der Inhalt einer Beziehung beim Abfragen des übergeordneten Modells gefiltert werden?
  • Ist es möglich, Mysql mit SqlAlchemy und Flask zu benutzen, wenn meine MySQL-Steckdose nicht in / tmp ist?
  • Wie baue ich eine Flasche Anwendung um eine bereits vorhandene Datenbank?
  • Sqlalchemy caching einige Fragen
  • SQLAlchemy ORM Umwandlung in Pandas DataFrame
  • SQLAlchemy - Schreiben einer Hybridmethode für Kinderzahl
  • Python ist die beste Programmiersprache der Welt.